Estilos implícitos en Application.Resources vs Window.Resources?
Estaba mirando aesta pregunt y noté que colocar un @ implíciTextBlock
estilo enApplication.Resources
aplica ese estilo a todos los TextBlocks, incluso aquellos dentro de otros controles comoButtons
, ComboBoxes
, etc.
<Application.Resources>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Foreground" Value="Blue" />
</Style>
</Application.Resources>
Colocando el estilo implícito enWindow.Resources
no cruza los límites de la plantilla de control, entonces cosas comoButtons
yComboBoxes
mantienen su texto negro predeterminado.
<Window.Resources>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Foreground" Value="Blue" />
</Style>
</Window.Resources>
Además, agregar el estilo predeterminado enApplication.Resources
hace que no pueda sobrescribir ese estilo con otro estilo implícito.
<!-- 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>
Mis preguntas son:
¿Por qué es esto ¿Hay otras diferencias entreApplication.Resources
yWindows.Resources
?¿Cuándo debería usar uno sobre el otro?
Entiendo queApplication.Resources
se aplica a toda la aplicación, mientras queWindow.Resources
se aplica solo a la ventana, sin embargo, quiero saber por qué los estilos enApplication
se tratan de manera diferente que los estilos enWindow