0

我对 WPF 比较陌生,我查看了几个关于如何设置 DataGrid 样式的教程。他们都使用相同的示例,但是当我尝试将它们实施到我的项目中时,出现了这个烦人的消息。

这是我一直在尝试实现的代码,我是从 MSDN 页面得到的:

<Window.Resources>
<!-- DataGrid style -->
<Style x:Key="DataGridStyle1" TargetType="{x:Type DataGrid}">
    <Setter Property="ColumnHeaderStyle" Value="{DynamicResource ColumnHeaderStyle1}"/>
</Style>
<!-- DataGridColumnHeader style -->
<Style x:Key="ColumnHeaderStyle1" TargetType="DataGridColumnHeader">
    <Setter Property="Height" Value="30"/>
    <Setter Property="Background" Value="LightBlue"/>
    <Setter Property="Foreground" Value="Blue"/>
    <Setter Property="FontSize" Value="18" />
    <Style.Triggers>
        <Trigger Property="IsMouseOver" Value="True">
            <Setter Property="ToolTip" Value="Click to sort."/>
        </Trigger>
    </Style.Triggers>
</Style>

我正在使用: - C# Framework 4.5.1 - Blend for Visual Studio 2013 - Visual Studio 2013(我在两个地方都遇到了错误)。

所有的导入和引用都很好。

我检查了解决方案属性,我的平台目标是“任何 CPU”

我的猜测是此控件(DataGridColumnHeader)可能不推荐使用此属性。

希望任何人都能说出实现我目标的正确方法。

提前致谢

4

1 回答 1

1

它试图DynamicResource在定义之前使用 a 。尝试交换样式。此外,这里真的不需要DynamicResourceIMO,只需将其更改为StaticResource.

<Window.Resources>
    <!-- DataGridColumnHeader style -->
    <Style x:Key="ColumnHeaderStyle1" TargetType="DataGridColumnHeader">
        <Setter Property="Height" Value="30"/>
        <Setter Property="Background" Value="LightBlue"/>
        <Setter Property="Foreground" Value="Blue"/>
        <Setter Property="FontSize" Value="18" />
        <Style.Triggers>
            <Trigger Property="IsMouseOver" Value="True">
                <Setter Property="ToolTip" Value="Click to sort."/>
            </Trigger>
        </Style.Triggers>
    </Style>
    <!-- DataGrid style -->
    <Style x:Key="DataGridStyle1" TargetType="{x:Type DataGrid}">
        <Setter Property="ColumnHeaderStyle" Value="{StaticResource ColumnHeaderStyle1}"/>
    </Style>
</Window.Resources>
于 2016-12-07T06:18:09.260 回答