DataGrid.CellStyle 适用于 C# WPF 应用程序中的整行

DataGrid.CellStyle applies to whole row in C# WPF App

我目前正在开发一个小型 c# wpf 项目。我以编程方式填充我的数据网格,我想在不影响整行的情况下更改样式中的一个单元格颜色。我在更改 DataGrid Rowstyle 后执行此操作。

                   <DataGrid.RowStyle>
                        <Style TargetType="DataGridRow">

                            <Style.Triggers>
                                <DataTrigger Binding="{Binding Path=Gebucht}" Value="True">
                                    <Setter Property="Background" Value="Green"/>
                                </DataTrigger>
                                <DataTrigger Binding="{Binding Path=dringendeBuchung}" Value="True">
                                    <Setter Property="Background" Value="Yellow"/>
                                </DataTrigger>
                            </Style.Triggers>
                        </Style>
                        
                    </DataGrid.RowStyle>
                    <DataGrid.CellStyle>
                        <Style TargetType="DataGridCell">

                            <Style.Triggers>

                                <DataTrigger Binding="{Binding Path=Dringend}" Value="True">
                                    <Setter Property="Background" Value="Red"/>
                                </DataTrigger>
                            </Style.Triggers>
                        </Style>
                    </DataGrid.CellStyle>

rowstyle 工作正常,但如果例如“Gebucht”为真且 Dringend 也为真,我想以绿色显示整行,但具有 Dringend 布尔值的单元格除外。

感谢您的帮助

The rowstyle works fine, but if for example "Gebucht" is true and Dringend is true too I want to display the whole row in green except for the Cell which has the Dringend boolean.

那么你应该设置特定列的 CellStyle 属性 而不是为整个 DataGrid 设置 CellStyle 属性,例如:

<DataGrid ... >
    <DataGrid.RowStyle>
        <Style TargetType="DataGridRow">
            <Style.Triggers>
                <DataTrigger Binding="{Binding Path=Gebucht}" Value="True">
                    <Setter Property="Background" Value="Green"/>
                </DataTrigger>
                <DataTrigger Binding="{Binding Path=dringendeBuchung}" Value="True">
                    <Setter Property="Background" Value="Yellow"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </DataGrid.RowStyle>
    <DataGrid.Columns>
        <DataGridTextColumn Binding="{Binding Dringend}" Header="Dringend">
            <DataGridTextColumn.CellStyle>
                <Style TargetType="DataGridCell">
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding Path=Dringend}" Value="True">
                            <Setter Property="Background" Value="Red"/>
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </DataGridTextColumn.CellStyle>
        </DataGridTextColumn>
        <!-- + other columns... -->
    </DataGrid.Columns>
</DataGrid>