11

这是 App.xaml:

<Application>
<Application.Resources>
    <ResourceDictionary>
        <Style TargetType="Window">
            <Setter Property="SnapsToDevicePixels" Value="True"/>
            <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/>
        </Style>
    </ResourceDictionary>
</Application.Resources>
</Application>

我也有 MainWindow.xaml。在 VS 的设计模式下查看时,它的背景确实是灰色的,应该是灰色的。无论如何,当应用程序运行时,窗口的背景默认为白色。

为什么?

如何解决这个问题?我希望所有窗口默认都具有标准背景。

4

2 回答 2

20

问题是在运行时,您的窗口类型将是MainWindow,而不是Window。隐式样式不适用于 TargetType 的派生类型。所以你的 Style 不会被应用。

在设计期间,您正在设计您MainWindowWindow.

您需要更改类型以匹配您的窗口类型。

于 2011-08-01T17:33:46.487 回答
14

跟进CodeNaked的答案,你必须为你拥有Style的每个人创建一个,但你可以像这样Window对所有这些人使用相同的样式BasedOn

<Application.Resources>
    <ResourceDictionary>
        <Style TargetType="Window">
            <Setter Property="SnapsToDevicePixels" Value="True"/>
            <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/>
        </Style>
        <Style TargetType="{x:Type local:MainWindow}"
               BasedOn="{StaticResource {x:Type Window}}"/>
        <Style TargetType="{x:Type local:SomeOtherWindow}"
               BasedOn="{StaticResource {x:Type Window}}"/>
        <!-- Add more Windows here... -->
    </ResourceDictionary>
</Application.Resources
于 2011-08-01T17:41:36.133 回答