注意:我知道我在哪里获得null但是不知道如何为该特定场景设置对它的引用。检查&取消选中非常完美的东西。只有按键事件处理标题栏中的复选框我才遇到麻烦。
我在列标题上有CheckBox
,默认焦点在该复选框上。我还有DataGrid_KeyDownEvents()
处理Enter key
事件的地方。当我按下Enter键时,当焦点位于Column Header复选框时,CurrentCell.Column.Header Column
将变为null。我的问题是如何正确设置对象的对象引用实例。
<DataGrid.Columns>
<DataGridTemplateColumn Header="" Width="50" >
<DataGridTemplateColumn.HeaderTemplate> <!--<column header>-->
<DataTemplate>
<CheckBox DataContext="{Binding ElementName=xyz, Path=DataContext}"
IsChecked="{Binding IsAllChecked, Mode=TwoWay}" Style="{DynamicResource CheckBoxStyle}" HorizontalAlignment="Center" VerticalAlignment="Center"></CheckBox>
</DataTemplate>
</DataGridTemplateColumn.HeaderTemplate>
<DataGridTemplateColumn.CellTemplate> <!--<rows>-->
<DataTemplate>
<CheckBox Style="{DynamicResource CheckBoxStyle}" HorizontalAlignment="Center" VerticalAlignment="Center" IsChecked="{Binding IsMarked, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Visibility="{Binding CanBeMarked, Converter={StaticResource BoolToVisConverter}}"></CheckBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
DataGrid_KeyDownEvents()
if ((e.Key == Key.Enter || e.Key == Key.Return))
{
if (this.CurrentCell.Column.Header.ToString() == XColumnName)
{
//do something
}
}
除了上面的代码之外,列标题引用上的<DataGridTemplateColumn.HeaderTemplate>
复选框是要处理的,但我在列对象this.CurrentCell.Column.Header
中得到Null引用。 gridRows中的复选框已经足够好了。