问题描述
文件: App.xaml
<Application x:Class="MyApp.App">
<Application.Resources>
<ResourceDictionary Source="Themes/Dark.xaml"/>
</Application.Resources>
</Application>
文件:Dark.xaml
<ResourceDictionary>
<SolidColorBrush x:Key="Background.Primary">Red</SolidColorBrush>
</ResourceDictionary>
文件:Main.xaml
<Window>
<Window.Resources>
<Style targettype="local:Main">
<Setter Property="Background" Value="{DynamicResource Background.Primary}"/>
</Style>
</Window.Resources>
</Window>
文件结构:
Root
App.xaml
Main.xaml
Themes
Dark.xaml
在设计器中,我可以注意到主窗口的背景变为红色,但是当我编译项目时,背景只是透明的!
解决方法
将隐式Style
添加到窗口的Resources
字典中时,它将应用于具有匹配类型的窗口的所有子项。
但是Main
窗口显然不是其自身的子项。
您应该设置Style
属性,而不要将Style
添加到Resources
:
<Window>
<Window.Style> !!! <--
<Style TargetType="local:Main">
<Setter Property="Background" Value="{DynamicResource Background.Primary}"/>
</Style>
</Window.Style>
</Window>
或者,您可以直接设置Background
属性:
<Window ... Background="{DynamicResource Background.Primary}" />
,
如果需要设置窗口背景,请尝试:
<Window ... >
<Window.Background>
<StaticResource ResourceKey="Background.Primary" />
</Window.Background>
...
</Window>
或者这样也可以:
<Window ...
Background="{StaticResource Background.Primary}">
...
</Window>