当修改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。

当修改DataGrid行的某个成员时,将该行传递给代码隐藏

您可以访问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属性的类名。