2016-01-22 72 views
0

我当前根据列的值设置了DataGridRow。风格看起来像这样;仅样式一列的单元格DataGrid C#WPF

<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

即仅适用格式优先级列的单元格,而不是整行。

回答

2

您可以尝试DataGridTemplateColumns的CellStyle。 Ref.

Like, 在资源中添加以下样式“DGCellStyle”。

<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}"/>