Не применяется стиль окна C# WPF
Прописал стиль окна:
<Style TargetType="Window">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Window">
<Grid>
<Rectangle Width="800" Height="639" Fill="White" Margin="0,95,0,0" RadiusX="16" RadiusY="16"></Rectangle>
<Image Source="/Resources/electronics 1.png" Width="290" Height="290" Margin="257,0,257,440"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
В конструкторе Visual Studio окно отображается корректно:
Однако, при запуске окно выглядит следующим образом:
У окна прописаны следующие свойства:
WindowStartupLocation="CenterScreen" WindowStyle="None" ResizeMode="NoResize" AllowsTransparency="True" ShowInTaskbar="False"
Объясните горе-разработчику, почему стиль не применяется)
Ответы (1 шт):
У меня заработало вот так:
- Переместите стиль в App.xaml и задайте ему ключ
<Application.Resources>
<Style TargetType="{x:Type Window}" x:Key="MyWindowStyle">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Window}">
<Grid>
<Rectangle Width="{TemplateBinding Width}" Height="{TemplateBinding Height}" Fill="White" Margin="0,95,0,0" RadiusX="16" RadiusY="16"/>
<Image Source="/Resources/electronics 1.png" Width="290" Height="290" HorizontalAlignment="Center" VerticalAlignment="Top"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Application.Resources>
Высоту и ширину прямоугольника можно сразу привязать к размерам реального окна. ВДруг вы в будущем захотите менять размер окна. Не рекомендую использовать марджины для абсолютного позиционирования, ну если только в редких случаях.
- Используйте ключ для подключения стиля
Width="800" Height="639" Style="{StaticResource MyWindowStyle}" WindowStyle="None" AllowsTransparency="True"
Смысл здесь в том, что окно не может использовать собственный словарь ресурсов, так как на момент инициализации этот словарь еще не существует, то есть не самого стиля еще нет, а окно уже пытается его использовать. Поэтому я предложил унести стиль на уровень выше.

