我想在基于该DataGridCell属性的自定义DataGrid的DataGrid中添加一个样式。例如,我希望有一个名为DependencyProperty的VisualizeReadOnlyCells,如果该属性设置为True,我希望用灰色背景绘制DataGridCell,即ReadOnly。还有其他类似的东西。作为解决办法,我为DataGridCell创建了两种不同的样式,并在CellStyle样式定义中将这些样式分配给DataGrid的CellStyle属性。但是,有了更多的属性,这种样式的数量将增加,代码将非常难以管理。
我目前的解决办法是:
<Style x:Key="DataGridCellNoVisualize" TargetType="DataGridCell">
- style definition
</Style>
<Style x:Key="DataGridCellVisualize" TargetType="DataGridCell">
<Style.Triggers>
<Trigger Property="IsReadOnly" Value="True">
<Setter Property="Background" Value="Gray"/>
</Trigger>
</Style.Triggers>
</Style>
<Style x:Key="DataGridStyle" TargetType="MyCustomDataGrid">
<Setter Property="CellStyle" Value="{StaticResource DataGridCellNoVisualize"/>
<Style.Triggers>
<Trigger Property="VisualizeReadOnlyCells" Value="True">
<Setter Property="CellStyle" Value="{Static Resource DataGridCellVisualize"/>
</Trigger>
</Style.Triggers>
</Style>我想得到的是这样的东西:
<Style x:Key="DataGridCellUniversalStyle" TargetType="DataGridCell">
- style definition
<Style.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsReadOnly" Value="True"/>
<Condition Property="MyParentDataGrid.VisualizeReadOnlyCells" Value="True"/>
</MultiTrigger.Conditions>
<MultiTrigger.Setters>
<Setter Property="Background" Value="Gray"/>
</MultiTrigger.Setters>
</MultiTrigger>
</Style.Triggers>
</Style>发布于 2017-10-16 15:03:43
如果我正确理解您的问题,您可以使用MultiDataTrigger并绑定到DataGridCell和父DataGrid。
<Style x:Key="DataGridCellUniversalStyle" TargetType="DataGridCell">
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding IsReadOnly, RelativeSource={RelativeSource Self}}" Value="True"/>
<Condition Binding="{Binding VisualizeReadOnlyCells, RelativeSource={RelativeSource AncestorType=local:MyCustomDataGrid}}" Value="True"/>
</MultiDataTrigger.Conditions>
<MultiDataTrigger.Setters>
<Setter Property="Background" Value="Gray"/>
</MultiDataTrigger.Setters>
</MultiDataTrigger>
</Style.Triggers>
</Style>https://stackoverflow.com/questions/46773057
复制相似问题