在我的数据网格中,我有一个 DataGridCheckBoxColumn 实现:
<DataGrid ItemsSource="{Binding Collection}">
<DataGrid.Columns>
<DataGridCheckBoxColumn Binding="{Binding Selected}"
ElementStyle="{StaticResource MaterialDesignDataGridCheckBoxColumnStyle}"
EditingElementStyle="{StaticResource MaterialDesignDataGridCheckBoxColumnEditingStyle}">
<DataGridCheckBoxColumn.CellStyle>
<Style TargetType="DataGridCell">
<EventSetter Event="CheckBox.Unchecked" Handler="Match_Unchecked"/>
<Style.Triggers>
<!-- Enabling -->
<DataTrigger Binding="{Binding DataContext.IsAdding,
RelativeSource={RelativeSource AncestorType=Window}}" Value="false">
<Setter Property="IsEnabled" Value="True" />
</DataTrigger>
<!-- Disabling -->
<DataTrigger Binding="{Binding DataContext.IsAdding,
RelativeSource={RelativeSource AncestorType=Window}}" Value="True">
<Setter Property="IsEnabled" Value="False" />
</DataTrigger>
</Style>
</DataGridCheckBoxColumn.CellStyle>
您可以看到我在DataGridCheckBoxColumn
的Style
上插入了一个DataTrigger
,因此当属性IsAdding
为false时,包含内容的Cell
应该启用,否则禁用。
这似乎没有起作用,Cell
甚至是启用的,为什么呢?
CheckBox
而不是DataGridCell
吗?你的事件设置器是否有效? - XAMlMAXCheckBox
位于DataGridCell
内部,我无法在一个里面有两个样式。 - MrFantasticButton
开关替换了你的EventSetter
),但似乎它正在工作。 - zc246ComboBox
的样式,但要想获得它,你需要定义列的模板,然后使用你定义的x:Key
样式。这是因为模板不是视觉树的一部分,除非显式定义,否则样式将不会被应用。希望这讲得清楚。而且你还没有回答你的事件设置器是否起作用! - XAMlMAX