DataGridTemplateColumn.HeaderTemplate'System.NullReferenceException'

时间:2017-11-30 10:44:27

标签: c# wpf xaml wpftoolkit

注意:我知道我在哪里获得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中的复选框已经足够好了。

0 个答案:

没有答案