如何从其子控件访问DataGridCell

时间:2011-07-25 18:46:07

标签: c# .net wpf datagrid

我有一个带有模板列的DataGrid,其中包含一个复选框:

<DataGridTemplateColumn Header="Foreign key">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <CheckBox HorizontalAlignment="Center" 
                VerticalAlignment="Center" 
                IsChecked="{Binding ForeignKey,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
                PreviewMouseDown="CheckBox_PreviewMouseDown" />
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

如何从处理程序内部(CheckBox_PreviewMouseDown)访问包含此复选框的DataGridCell,只将CheckBox作为发件人:

private void CheckBox_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
    CheckBox checkBox = sender as CheckBox;
    ???
}

1 个答案:

答案 0 :(得分:1)

如果您需要访问UI控件,请使用helper遍历可视树。或者,如果您只需要数据绑定,请使用CheckBox的Tag属性。

<CheckBox HorizontalAlignment="Center"
          VerticalAlignment="Center"
          IsChecked="{Binding ForeignKey,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
          PreviewMouseDown="CheckBox_PreviewMouseDown"
          Tag="{Binding}" />

然后您可以在代码中访问它,并将其类型化为绑定项的类型。