2

我使用 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 不是。

它仅在我直接在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 主题混合时似乎存在问题。如果我删除参考它的工作原理!

4

1 回答 1

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>

结果是

在此处输入图像描述

于 2013-04-11T12:58:36.827 回答