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

Respuestas a la pregunta(8)

Su respuesta a la pregunta