当修改DataGrid行的某个成员时,将该行传递给代码隐藏
本文关键字:隐藏 代码 DataGrid 修改 成员 | 更新日期: 2023-09-27 18:27:56
我有一个DataGrid,它从List中获取Name、Age和IsFriend值。我的专栏格式是这样的:
<DataGrid.Columns>
<DataGridTextColumn Header="Name" Binding="{Binding Path=Name}"></DataGridTextColumn>
<DataGridTextColumn Header="Age" Binding="{Binding Path=Age}"></DataGridTextColumn>
<DataGridTemplateColumn Header="Friend">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding Path=IsFriend, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Checked="CheckBox_ValueChanged"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
在我的CheckBox_ValueChanged代码后面,我希望能够获得其IsFriend复选框被选中的人的姓名。这是我的代码背后的粗略草图:
private void CheckBox_ValueChanged(object sender, RoutedEventArgs e)
{
var checkBox = sender as CheckBox;
//string name = Get the name that corresponds to the checkBox
//Perform actions using the checkbox and name
}
我不确定是否应该将行传递给CheckBox_ValueChanged方法(或如何执行),或者是否有一种更简单的方法可以使用数据绑定或XAML中的类似方法来获取Name。
您可以访问checkBox's DataContext
,并从中获得Name
属性-
private void CheckBox_ValueChanged(object sender, RoutedEventArgs e)
{
var checkBox = sender as CheckBox;
string name = (checkBox.DataContext as YourClassName).Name;
}
YourClassName
是包含name、Age和IsFriend属性的类名。