Я объявил стиль, который хочу применить ко ВСЕМ кнопкам в проекте, стиль находится в 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}"/
Но я ищу вещи получше, чем тупо перекраивать все стили.