I'm creating a simple WPF project in VS2013 and I want to apply properties to my main Window. I set them in my App.xaml
file like this:
<Application.Resources>
<Style TargetType="Window">
<Setter Property="Background" Value="#FF2D2D30" />
</Style>
</Application.Resources>
The problem is that nothing happens. When I change the TargetType
to Grid however, the setter property works just fine. Why does this happen?
It is necessary to add construction in Window
:
Style="{StaticResource {x:Type Window}}"
Window
in XAML:
<Window x:Class="WindowStyleHelp.MainWindow"
Style="{StaticResource {x:Type Window}}"
...>
Or define Style
in resources like this:
xmlns:local="clr-namespace:MyWpfApplication"
<Application.Resources>
<Style TargetType="{x:Type local:MainWindow}">
<Setter Property="Background" Value="#FF2D2D30"/>
</Style>
</Application.Resources>
Answering for this question "Why does it not works".
The reason why the Target type is not applied to your Window is because, you are using a derived type of a window with name "MainWindow". So in your style resource you have to set the target type as the derived type (MainWindow). By doing so it will be applied only to the "MainWindow" window.
<Style TargetType="local:MainWindow">
<Setter Property="Background" Value="#FF2D2D30" />
</Style>