这是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中的设计模式下查看时,它的背景确实是灰色的,应该是它。无论如何,当应用程序运行时,窗口的背景默认为白色。
为什么?
如何解决这个问题?我希望所有窗口都默认具有标准背景。
答案 0 :(得分:18)
问题是在运行时,窗口类型为MainWindow
,而不是Window
。隐式样式不适用于TargetType的派生类型。所以你的风格将不适用。
在设计期间,您正在设计MainWindow
,但我怀疑它会创建一个Window
作为基础。
您需要更改类型以匹配您窗口的类型。
答案 1 :(得分:12)
根据CodeNaked的回答,你必须为你拥有的每个Style
创建一个Window
,但是你可以使用相同的样式BasedOn
{{3}} {1}}喜欢这个
<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