DataGridCell样式基于DataGrid属性

时间:2017-10-16 14:45:57

标签: c# wpf xaml datagrid

我想为自定义DataGridCell的{​​{1}}添加一个样式,该样式基于DataGrid的属性。例如,我想要一个名为VisualizeReadOnlyCells的DependencyProperty,如果该属性设置为True,我希望ReadOnly的DataGrid以灰色背景绘制。和其他类似的事情。作为一种解决方法,我为DataGridCell创建了两种不同的样式,并将这些样式分配给DataGridCell样式定义中CellStyle的{​​{1}}属性。但是随着更多属性,这些样式的数量将增加,代码将非常难以管理。

我目前的解决方案是:

DataGrid

我想得到的是这样的:

DataGrid

1 个答案:

答案 0 :(得分:0)

如果我正确理解您的问题,您可以使用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>