【发布时间】:2013-02-06 15:01:56
【问题描述】:
嘿,
我需要帮助弄清楚如何访问 wpf 数据网格标题中的复选框。这是我所拥有的:
<DataGrid.Columns>
<DataGridTemplateColumn CanUserReorder="False" CanUserResize="False">
<DataGridTemplateColumn.HeaderTemplate>
<DataTemplate>
<CheckBox Name="cbxAll" Checked="CheckBox_Checked" Unchecked="CheckBox_Unchecked" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" HorizontalAlignment="Center" VerticalAlignment="Center" />
</DataTemplate>
</DataGridTemplateColumn.HeaderTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding Path=Checked, UpdateSourceTrigger=PropertyChanged}" IsEnabled="{Binding Path=NoErrors}" Name="theCheckbox" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" HorizontalAlignment="Center" VerticalAlignment="Center" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
我已经为复选框设置了Name,但由于某种原因,我无法从代码端访问它。
刷新我的数据网格项目后,我需要访问该复选框以取消选中它。我该怎么做?
【问题讨论】:
-
您不需要“访问”复选框。 WPF不是winforms。 UI is not Data。将 IsChecked 属性绑定到基础 DataContext 中的布尔值。学习 MVVM。
-
另外,如果仔细观察,CheckBox 位于
DataTemplate内,这意味着没有实际的 CheckBox。它只是一个模板,因此,虽然有一种方法可以在运行时检查可视化树并获取对它的引用,但这并不是实现您想要在此处实现的目标的方法。 -
第二次学习 MVVM。如果不先了解 WPF,几乎不可能在 WPF 中做任何事情。
-
请注意,我需要更改的复选框位于数据网格标题中。绑定 IsChecked 将如何帮助我?请举个例子?