0

我有一个 DataGrid,它从列表中获取 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 CheckBox 的人的姓名。这是我背后代码的粗略草图:

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 中的数据绑定或类似的东西来获取名称。

4

1 回答 1

0

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

于 2013-08-15T08:24:22.377 回答