样式只有一列的单元格DataGrid C#WPF

时间:2016-01-22 09:08:03

标签: c# wpf xaml datagrid

我目前根据列的值设置DataGridRow样式。风格看起来像这样;

<DataGrid.RowStyle>
    <Style TargetType="DataGridRow">
        <Style.Triggers>
            <DataTrigger Binding="{Binding Overdue}" Value="1">
                <Setter Property="FontWeight" Value="Bold"/>
            </DataTrigger>
            <DataTrigger Binding="{Binding Priority}" Value="High">
                <Setter Property="Background" Value="Red"/>
            </DataTrigger>
            <DataTrigger Binding="{Binding Priority}" Value="Medium">
                <Setter Property="Background" Value="Orange"/>
            </DataTrigger>
            <DataTrigger Binding="{Binding Priority}" Value="Low">
                <Setter Property="Background" Value="LightGreen"/>
            </DataTrigger>
        </Style.Triggers>
    </Style>
</DataGrid.RowStyle>

这会根据列的值将样式应用于整行。但是现在我只将样式应用于该单元格中的列。这就是风格目前的样子;

enter image description here

但是我想通过下面的一行删除单元格中的样式;

enter image description here

即。仅将格式应用于优先级列的单元格而不是整行。

1 个答案:

答案 0 :(得分:2)

您可以尝试使用CellStyle for DataGridTemplateColumns。 Ref.

像, 添加以下样式&#34; DGCellStyle&#34;在资源中。

    <Style x:Key="DGCellStyle" TargetType="DataGridCell">
            <Style.Triggers>
            <DataTrigger Binding="{Binding Overdue}" Value="1">
                <Setter Property="FontWeight" Value="Bold"/>
            </DataTrigger>
            <DataTrigger Binding="{Binding Priority}" Value="High">
                <Setter Property="Background" Value="Red"/>
            </DataTrigger>
            <DataTrigger Binding="{Binding Priority}" Value="Medium">
                <Setter Property="Background" Value="Orange"/>
            </DataTrigger>
            <DataTrigger Binding="{Binding Priority}" Value="Low">
                <Setter Property="Background" Value="LightGreen"/>
            </DataTrigger>
        </Style.Triggers>
    </Style>

然后,在DataGridTemplateColumn中引用此样式。

<DataGridTemplateColumn Header="ColumnHeader" Width="SizeToHeader" CellStyle="{StaticResource DGCellStyle}"/>