我在app.xaml中定义了一个样式,如下所示:
<Style TargetType="DataGridCell">
<Setter Property= "BorderThickness" Value="1"/>
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="DataGridCell">
<Grid Height="18">
<Border BorderBrush="Black" BorderThickness=".2" >
<Border x:Name="border" Background="#992288ff" BorderBrush="Black" BorderThickness=".2">
......
......
......
</Border>
</Border>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
在我的表单中,我为一个单元格定义了一种样式。代码如下:
<DataGridTextColumn Width="*" Header="Status" Binding="{Binding Status, Mode=TwoWay}" IsReadOnly="True" >
<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="Foreground">
<Setter.Value>
<Binding Converter="{StaticResource FGColorKey}"/>
</Setter.Value>
</Setter>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
这里我只定义前景样式。但我在app.xaml中为单元格模板定义的样式不适用于此单元格。请看下面的图片:
答案 0 :(得分:4)
通过在列上设置CellStyle
属性,该样式将用于该列中的每个单元格,系统将不再关心您已定义为资源的样式。
要应用这两种样式,您必须将单元格样式中的样式基于app.xaml中资源中的样式。
您可以通过在样式上设置BasedOn
属性来执行此操作:
<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell" BasedOn="{StaticResource {x:Type DataGridCell}}">
<Setter Property="Foreground">
<Setter.Value>
<Binding Converter="{StaticResource FGColorKey}"/>
</Setter.Value>
</Setter>
</Style>
</DataGridTextColumn.CellStyle>