Почему не работает стиль оформления фона окна?
Вот 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, то он действительно серый, как и должно быть. В любом случае, когда приложение запущено, фон фона по умолчанию является белым.
Почему?
Как это исправить? Я хочу, чтобы все окна имели стандартный фон по умолчанию.
Ответы
Ответ 1
Следуя ответам CodeNaked, вам нужно создать Style
для каждого Window
, который у вас есть, но вы можете использовать одинаковый стиль для всех из них с BasedOn
, как этот
<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
Ответ 2
Проблема во время выполнения, тип вашего окна будет MainWindow
, а не Window
. Неявные стили не применяются к производным типам TargetType. Таким образом, ваш стиль не будет применяться.
Во время разработки вы разрабатываете свой MainWindow
, но я подозреваю, что он создает в качестве основы Window
.
Вам нужно будет изменить тип, чтобы он соответствовал типу вашего окна.