我在VS2013中创建一个简单的WPF项目,我想将属性应用到我的主窗口。我将它们设置在App.xaml
文件中,如下所示:
<Application.Resources>
<Style TargetType="Window">
<Setter Property="Background" Value="#FF2D2D30" />
</Style>
</Application.Resources>
问题是没有任何反应。然而,当我将TargetType
更改为Grid时,setter属性可以正常工作。为什么会这样?
答案 0 :(得分:4)
有必要在Window
中添加构造:
Style="{StaticResource {x:Type Window}}"
XAML中的 Window
:
<Window x:Class="WindowStyleHelp.MainWindow"
Style="{StaticResource {x:Type Window}}"
...>
或者在这样的资源中定义Style
:
xmlns:local="clr-namespace:MyWpfApplication"
<Application.Resources>
<Style TargetType="{x:Type local:MainWindow}">
<Setter Property="Background" Value="#FF2D2D30"/>
</Style>
</Application.Resources>
答案 1 :(得分:4)
回答这个问题“为什么它不起作用”。
Target类型未应用于Window的原因是,您使用的是名为“MainWindow”的窗口的派生类型。因此,在您的样式资源中,您必须将目标类型设置为派生类型(MainWindow)。通过这样做,它将仅应用于“MainWindow”窗口。
<Style TargetType="local:MainWindow">
<Setter Property="Background" Value="#FF2D2D30" />
</Style>