c# - 以编程方式禁用在 xaml 中创建的样式触发器

标签 c# wpf datagrid

我正在开发一个 C# WPF 项目,我使用样式触发器根据单元格值之一来设置每行的背景颜色样式。

下面是我的风格触发器。

<Window.Resources>
        <Style TargetType="DataGridRow">
            <Style.Triggers>
                <DataTrigger Binding="{Binding Highest Alarm Level}" Value="Critical">
                    <Setter Property="Background" Value="Red" />
                </DataTrigger>
                <DataTrigger Binding="{Binding Highest Alarm Level}" Value="Medium">
                    <Setter Property="Background" Value="Orange" />
                </DataTrigger>
                <DataTrigger Binding="{Binding Highest Alarm Level}" Value="Warning">
                    <Setter Property="Background" Value="Yellow" />
                </DataTrigger>
                <DataTrigger Binding="{Binding Highest Alarm Level}" Value="Info">
                    <Setter Property="Background" Value="White" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Window.Resources>

我需要做的是,在某些情况下我不希望使用这种样式,所以我要做的是,如果在 C# 代码中某个条件变为 true,我想禁用上面完成的所有样式都不会被使用,即所有样式都被关闭,因此不会设置行的背景颜色。

最佳答案

向自定义DataGridRow添加一个键Style

<Style TargetType="DataGridRow" x:Key="MyRowStyle">
    <!-- Define Triggers -->
</Style>

然后您只需在默认样式和自定义样式之间切换即可。

如果您将 Style 设置为 null,则意味着将应用默认的 Style

dataGrid.RowStyle = _boolCondition ? this.FindResource("MyRowStyle") as Style : null;

关于c# - 以编程方式禁用在 xaml 中创建的样式触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18283233/

相关文章:

WPF ComboBox 和 SelectedItem 绑定(bind)到 XML 数据源

javascript - 从主干集合中设置 Fuelux 数据网格源

c# - WPF c#,将数据网格列与代码隐藏在一起

c# - ITextSharp 签署 PDF/A 文档

c# - 创建全尺寸 WPF 网格

c# - DTO 中的枚举类型命名约定

wpf - ResourceDictionary 源绑定(bind)到模块(用于本地化)

绑定(bind)到 DataGridRow.IsSelected 属性时出现 Wpf DataGrid 虚拟化问题

c# - 在 node.js 服务器和 C# 客户端之间进行通信的最佳方式是什么?

c# - XOR 运算符 - 它是如何工作的?