Я объявил стиль, который я хочу применить ко всем кнопкам в проекте, стиль находится в ResourceDictionary:
<Style TargetType="StackPanel">
<Setter Property="Orientation" Value="Horizontal" />
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="HorizontalAlignment" Value="Center"/>
</Style>
Теперь, в каком-то окне, я хочу наследовать этот стиль, но добавьте значение:
<Style TargetType="StackPanel">
<Setter Property="Margin" Value="5"/>
</Style>
Проблема в том, что он не наследует от глобального стиля, чтобы наследовать, мне нужно назначить ключ для глобального стиля:
<Style TargetType="StackPanel" x:Key="StackPanelStyle" />
И затем в окне XAML наследуем (или/и переопределяем - необязательно):
<Style TargetType="StackPanel" BasedOn="StackPanelStyle" />
Проблема заключается в том, что если вы назначаете ключ, он не является глобальным, и вы должны вызывать его для каждого окна/области.
Решение моего вопроса должно быть одним из двух (есть ли что-то еще, что я упускаю?):
- Имейте глобальный стиль с ключом, который автоматически применяется ко всем целевым элементам управления во всем приложении.
- Способ ссылки на неназванный стиль ResourceDictionary без его переопределения.
Я думал об обновлении стилей возле названных стилей (в ResourceDictionary), которые действительно работают:
<!--In the ResourceDictionary-->
<Style x:Key="StackPanelStyle" TargetType="StackPanel">
<Setter Property="Orientation" Value="Horizontal" />
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="HorizontalAlignment" Value="Center"/>
</Style>
<!--In the app.xaml-->
<Style TargetType="StackPanel" BasedOn="{StaticResource StackPanelStyle}"/>
<!--In the window/page scope-->
<Style TargetType="StackPanel" BasedOn="{StaticResource StackPanelStyle}"/
Но я ищу лучшего материала, чем тупо переодетые все стили.