我有一个带有模板列的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;
???
}
答案 0 :(得分:1)
如果您需要访问UI控件,请使用helper遍历可视树。或者,如果您只需要数据绑定,请使用CheckBox的Tag属性。
<CheckBox HorizontalAlignment="Center"
VerticalAlignment="Center"
IsChecked="{Binding ForeignKey,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
PreviewMouseDown="CheckBox_PreviewMouseDown"
Tag="{Binding}" />
然后您可以在代码中访问它,并将其类型化为绑定项的类型。