Я смотрел этот вопрос и заметил, что размещение неявного стиля TextBlock
в Application.Resources
применяет этот стиль ко всем TextBlocks, даже к тем, которые находятся внутри других элементов управления, таких как как Buttons
, ComboBoxes
и т.д.
<Application.Resources>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Foreground" Value="Blue" />
</Style>
</Application.Resources>
Размещение неявного стиля в Window.Resources
не пересекает границы шаблона управления, поэтому такие вещи, как Buttons
и ComboBoxes
, сохраняют свой черный текст по умолчанию.
<Window.Resources>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Foreground" Value="Blue" />
</Style>
</Window.Resources>
Кроме того, добавление стиля по умолчанию в Application.Resources
делает его таким, чтобы вы не могли перезаписать этот стиль с помощью другого неявного стиля.
<!-- Doesn't work if implicit style with same property is in Application.Resources -->
<ComboBox.Resources>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Foreground" Value="Red" />
</Style>
</ComboBox.Resources>
Мои вопросы:
- Почему это?
- Существуют ли другие различия между
Application.Resources
иWindows.Resources
? -
Когда нужно использовать один над другим?
Я понимаю, что
Application.Resources
применяется ко всему приложению, аWindow.Resources
относится только к окну, однако я хочу знать, почему стили вApplication
обрабатываются иначе, чем стили вWindow