触发/设置数据网格中特定行的样式

Posted

技术标签:

【中文标题】触发/设置数据网格中特定行的样式【英文标题】:Trigger/Set a style for a specific Row in a datagrid 【发布时间】:2021-11-20 01:57:29 【问题描述】:

我使用 DataGrid 制作了一个表,其中 List 作为其 ItemsSource 绑定。我目前只想更改“计算函数”选项卡的行样式。我希望能够设置它,以便“计算函数”中的任何行的前景和背景为红色,并且我的所有其他选项卡保持正常。这怎么可能?

<DataGrid Name="ReflectionDataGrid"SelectedItem="Binding SelectedItem" ItemsSource="Binding List" AutoGenerateColumns="False" IsHitTestVisible="True">


           <DataGrid.RowStyle>
                <Style TargetType="x:Type DataGridRow">
                    
                    <Style.Triggers>
                        <Trigger Property="Header" Value="Calculation Functions">
                            <Setter Property="Background" Value="Red"/>
                            <Setter Property="Foreground" Value="Red"/>
                        </Trigger>
                    </Style.Triggers>
                    
                </Style>
            </DataGrid.RowStyle> 
</DataGrid>

【问题讨论】:

每个选项卡都应该有一个 DataGrid。 【参考方案1】:

您可以绑定到父TabControlSelectedItemHeader 属性:

<Style TargetType="x:Type DataGridRow">
    <Style.Triggers>
        <DataTrigger Binding="Binding SelectedItem.Header, RelativeSource=RelativeSource AncestorType=TabControl"
                     Value="Calculation Functions">
            <Setter Property="Background" Value="Red"/>
            <Setter Property="Foreground" Value="Red"/>
        </DataTrigger>
    </Style.Triggers>
</Style>

【讨论】:

以上是关于触发/设置数据网格中特定行的样式的主要内容,如果未能解决你的问题,请参考以下文章

选择行时设置文本WPF DataGrid行的颜色

如何将数据网格行的背景绑定到特定颜色?

如何结合两个条件来覆盖数据网格的选定行样式?

选择后更改整个数据网格行的背景颜色

更改extjs中网格摘要行的颜色

如何根据数据对 MVCContrib 网格中的行进行样式设置?