我使用DataGrid(WPF 4.0)控件。它的样式放在ResourceDictionary中,并包含一个嵌套的Style元素:
<Style x:Key="MyDataGridStyle" TargetType="{x:Type controls:DataGrid}">
<Setter Property="Background" Value="Black"/>
<Setter Property="CellStyle">
<Setter.Value>
<Style TargetType="{x:Type DataGridCell}">
<Setter Property="BorderThickness" Value="0" />
<Setter Property="FocusVisualStyle" Value="{x:Null}" />
</Style>
</Setter.Value>
</Setter>
</Style>
此处仅应用背景样式。 CellStyle NOT。
仅当我在DataGrid
元素中直接定义CellStyle时才有效:
<DataGrid Style="{StaticResource MyDataGridStyle}">
<DataGrid.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<Setter Property="BorderThickness" Value="0" />
<Setter Property="FocusVisualStyle" Value="{x:Null}" />
</Style>
</DataGrid.CellStyle>
</DataGrid>
任何想法为什么?
更新
将样式与我在ResourceDictionary中引用的PresentationFramework.Aero主题混合时似乎存在问题。如果我删除了引用它就可以了!
答案 0 :(得分:1)
按照你建议的方式对我做的很好,我会粘贴我用来测试你的风格的代码。 (注意我添加了background = red,所以我实际上可以看到是否正在应用样式)
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<Style x:Key="MyDataGridStyle" TargetType="{x:Type DataGrid}">
<Setter Property="Background" Value="Black"/>
<Setter Property="CellStyle">
<Setter.Value>
<Style TargetType="{x:Type DataGridCell}">
<Setter Property="BorderThickness" Value="0" />
<Setter Property="Background" Value="Red"/>
<Setter Property="FocusVisualStyle" Value="{x:Null}" />
</Style>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<DataGrid Style="{StaticResource MyDataGridStyle}">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Text}"/>
<DataGridTextColumn Binding="{Binding Tag}"/>
</DataGrid.Columns>
<DataGrid.Items>
<TextBlock Text="Item1" Tag="aa"/>
<TextBlock Text="Item2" Tag="bb"/>
<TextBlock Text="Item3" Tag="cc"/>
<TextBlock Text="Item4" Tag="dd"/>
</DataGrid.Items>
</DataGrid>
</Window>
结果