如何访问Silverlight(3.0)网格中嵌入的文本框值?

2 silverlight silverlight-3.0 c#-3.0

我有一个Silverlight DataGrid控件,里面有一个文本框和一个按钮控件.

它就是如此

<dg:DataGrid x:Name="myGrid" AutoGenerateColumns="False">
  <dg:DataGrid.Columns>

 <dg:DataGridTemplateColumn Header="Name" Width="100">
    <dg:DataGridTemplateColumn.CellTemplate>
      <DataTemplate>
        <TextBox Text="{Binding Name}" x:name="txtName"/>
      </DataTemplate>
    </dg:DataGridTemplateColumn.CellTemplate>
  </dg:DataGridTemplateColumn>

  <dg:DataGridTemplateColumn Header="Age" Width="100">
    <dg:DataGridTemplateColumn.CellTemplate>
      <DataTemplate>
        <TextBox Text="{Binding Age}" x:name="txtAge"/>
      </DataTemplate>
    </dg:DataGridTemplateColumn.CellTemplate>
  </dg:DataGridTemplateColumn>

      <dg:DataGridTemplateColumn Header="Action" Width="100">
    <dg:DataGridTemplateColumn.CellTemplate>
      <DataTemplate>
        <Button x:Name="btnCilck" Content="Click" Click="btnClick_Click />
      </DataTemplate>
    </dg:DataGridTemplateColumn.CellTemplate>
 </dg:DataGridTemplateColumn>

  </dg:DataGrid.Columns>
</dg:DataGrid>
Run Code Online (Sandbox Code Playgroud)

我想要做的是在运行时我想获取所选行的文本框值(txtName).

我的意思是,说网格有10行(即特定列中的10个文本框;比如列名称)和10个按钮,比如说行列(让我们这样命名).

现在当我点击第5行Click按钮时,我想从该行中的文本框中获取值.

提前致谢.

Ale*_*ven 7

在单击事件处理程序可以检查发件人(巴顿)的DataContext,这将是该项目由该行表示,将有属性名称,年龄等; 你可以获得绑定到文本框的属性.

更好的设计,假设你设计你的应用程序与MVVM,是在视图模型一个ICommand和按钮的命令属性绑定到该ICommand的.在这种情况下,您可以将某些内容绑定到按钮的CommandParameter,并在ICommand处理程序中接收它 - 要么是DataContext本身,{Binding}要么是您感兴趣的实际属性.

编辑:抱歉继续使用Command绑定,它们在SL3中不易提供; 虽然有各种各样的方法,但如果你感兴趣的话可以谷歌吧.命令模式将更好地封装应用程序中的操作.

实际上有方法可以获得网格单元格的实际内容,但我不推荐它,因为它会带来很多开销,并且在任何模板发生变化时都会很脆弱; 使用实际数据并让控件通过绑定完成工作要好得多.