首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于DataGridCell属性的DataGrid风格

基于DataGridCell属性的DataGrid风格
EN

Stack Overflow用户
提问于 2017-10-16 14:45:57
回答 1查看 175关注 0票数 1

我想在基于该DataGridCell属性的自定义DataGridDataGrid中添加一个样式。例如,我希望有一个名为DependencyProperty的VisualizeReadOnlyCells,如果该属性设置为True,我希望用灰色背景绘制DataGridCell,即ReadOnly。还有其他类似的东西。作为解决办法,我为DataGridCell创建了两种不同的样式,并在CellStyle样式定义中将这些样式分配给DataGridCellStyle属性。但是,有了更多的属性,这种样式的数量将增加,代码将非常难以管理。

我目前的解决办法是:

代码语言:javascript
复制
<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>

我想得到的是这样的东西:

代码语言:javascript
复制
<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>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-16 15:03:43

如果我正确理解您的问题,您可以使用MultiDataTrigger并绑定到DataGridCell和父DataGrid

代码语言:javascript
复制
<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>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46773057

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档