我有一个 silverlight DataGrid,如下所示
<sdk:DataGrid Name="DataGridDream" AutoGenerateColumns="False" HeadersVisibility="None" Background="Yellow" HorizontalAlignment="Center" Height="100" VerticalAlignment="Center" Width="120" >
<sdk:DataGrid.Columns >
<sdk:DataGridTextColumn Binding="{Binding By}" >
</sdk:DataGridTextColumn>
<sdk:DataGridTextColumn Binding="{Binding UserName}" >
</sdk:DataGridTextColumn>
<sdk:DataGridTemplateColumn>
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Name="ButtonSave" Content="Take" Click="ButtonSave_Click">
</Button>
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>
</sdk:DataGrid.Columns>
</sdk:DataGrid>
我在DataGrid中有一个按钮的Click事件,
private void ButtonSave_Click(object sender, RoutedEventArgs e)
{
int Value = // Value of the UserId column when a button is clicked on that row
}
怎么做?
答案 0 :(得分:2)
这将获得点击行的UserName
属性的值:
private void ButtonSave_Click(object sender, RoutedEventArgs e)
{
string userName = (((Button)sender).DataContext as ModelClass).UserName;
}
ModelClass 是您的属性所在的位置,即绑定的基础源类。
答案 1 :(得分:1)
您可以从DataGrid中获取所选项目,尝试以下内容:
private void ButtonSave_Click(object sender, RoutedEventArgs e)
{
var row = (int)DataGridDream.SelectedItem;
}
答案 2 :(得分:0)
您可以将当前行值作为动态对象获取。您可以使用该对象访问网格行中的所有值。
Mike Schwartz solution的修改版本将是
private void ButtonSave_Click(object sender, RoutedEventArgs e)
{
dynamic row = DataGridDream.SelectedItem;
}
您还可以获取行值Rohit Vats suggested。但是通过使用dynamic关键字,您不必声明Model类。
private void ButtonSave_Click(object sender, RoutedEventArgs e)
{
dynamic row = ((Button)sender).DataContext;
}
之后,您可以像这样访问UserName
var UserName = row.UserName;