我似乎无法为我的应用程序中的所有窗口设置默认背景颜色。有谁知道怎么做?
目前我正在我的App.xaml文件中设置一个主题。
<Application>
<Application.Resources>
<ResourceDictionary Source="Themes/SomeTheme.xaml" />
这基本上是我整个应用程序的样式。
SomeTheme.xaml
内部我试图为我的所有窗口设置默认颜色。
<SolidColorBrush Color="{DynamicResource MainColor}" x:Key="CommonBackgroundBrush" />
<Style TargetType="{x:Type Window}">
<Setter Property="Background" Value="{DynamicResource CommonBackgroundBrush}" />
</Style>
对于Window
类型的衍生物,此语法完全被忽略。
是否有某种方法可以强制将样式应用于Window
的所有衍生物?
这种语法的奇怪之处在于它实际上在VS设计预览窗口中显示了正确的颜色。
答案 0 :(得分:6)
您的窗口不是Window
的实例,它们是从Window
派生的类的实例。所以我认为你必须列出所有内容,但你可以使用BasedOn
来帮助。
答案 1 :(得分:4)
如果确实没有实际的继承,这可能就像你可以做到的那样简单:
<Style TargetType="{x:Type Window}">
<Setter Property="Background">
<Setter.Value>
<SolidColorBrush Color="Blue"/>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="{x:Type local:MainWindow}" BasedOn="{StaticResource {x:Type Window}}"/>
<Style TargetType="{x:Type local:Dialogue}" BasedOn="{StaticResource {x:Type Window}}"/>
...
至少你不需要那样复制整个风格
答案 2 :(得分:4)
为您的样式x:Key
,
<Style x:Key="WindowStyle" TargetType="{x:Type Window}">
然后在它应该适用的每个窗口中引用它:
<Window x:Class="WpfApplication1.MainWindow" ... Style="{StaticResource WindowStyle}">
答案 3 :(得分:1)
我对这一切都很陌生,所以这是我5便士的价值。 我改变了网格的背景......不确定这样做是否有任何问题:)
<Style TargetType="{x:Type Grid}">
<Setter Property="Background" Value="#FFECE9D8"/>
</Style>