¿Cómo se configura el color predeterminado, la familia de fuentes y el tamaño de fuente para un TextBlock y Label en una aplicación WPF?

Edit: Supongo que la pregunta no se hizo muy claramente. En realidad se compone de 4 diferentes:

Cómo hace unTextBlock obtiene su color predeterminado, si la aplicación cliente no proporciona ningún estilo, ya sea mediante programación o mediante xaml?Cómo hace unLabel ¿obtiene su color predeterminado?Cómo hace unTextBlock obtiene su tamaño de fuente y familia de fuentes predeterminados, si la aplicación cliente no proporciona ningún estilo, ya sea mediante programación o mediante xaml?Cómo hace unLabel ¿obtiene su tamaño de fuente y familia de fuente predeterminados?

BTW, las preguntas no son sobre cómocambi o definir estilos para el color / tamaño de fuente / familia de fuentes de unaTextBlock o unLabel, aunque de alguna manera están relacionados. Creo que ya sabía la respuesta para el # 2, esa es unaLabel obtiene su color de SystemColors.ControlTextBrushKey y anulandoConrolTextBrushKey al igual que

<SolidColorBrush x:Key="{x:Static SystemColors.ControlTextBrushKey}" Color="Red"/>

Podrías cambiar el color "globalmente" paraLabels. Después de investigar un poco, creo que también encuentro la respuesta para el n. ° 1: ATextBlock hereda el color de primer plano de su contenido deWindow, que por defecto obtiene suForeground color de SystemColors.WindowTextBrushKey. Al definir un color para WindowTextBrush así:

<Window.Resources>
    <SolidColorBrush x:Key="{x:Static SystemColors.WindowTextBrushKey}" 
                     Color="Yellow"/>
</Window.Resources>

Podrías cambiar el color de "primer plano" para elTextBlocks dentro delWindow.

as preguntas 3 y 4 siguen siendo un misterio para mí, pero supongo que tienen que ver con la SystemFonts.

Espero que esto tenga sentido. Realmente me gusta saber las respuestas ya que me han estado molestando por un tiempo. ¡Muchas gracias

Abajo está la publicación original:

Si te fijas en el estilo de unaLabel en el tema (por ejemplo, "aero.normalcolor.xaml") que viene con Windows, puede encontrar

<Setter Property="Foreground" 
        Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>

Que establece el color para unLabel. Pero no hay donde elFontSizea propiedad @ se especifica en el estilo, que supongo que tiene algo que ver con la SystemFonts. ParaTextBlock, se ve aún más misterioso ya que el estilo en "aero.normalcolor.xaml" tiene solo 4 líneas:

<Style x:Key="{x:Type TextBlock}"
                 TargetType="{x:Type TextBlock}">
        <Setter Property="TextWrapping"
                        Value="NoWrap"/>
        <Setter Property="TextTrimming"
                        Value="None"/>
    </Style>

¿Dónde hace unLabel o unTextBlock obtenga los valores para su color y tamaño de fuente / familia, si la aplicación no establece ninguno, y ¿dónde están esos ganchos en WPF?

Editar

Esta es una prueba de manejo que intenta establecer laTextBlock color a través deSystemColors.ControlTextBrush (suponiendo que ahí es donde unTextBlock obtiene su color predeterminado, que parece ser falso):

<Window x:Class="TestFontColor.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
<StackPanel>
    <StackPanel.Resources>
        <SolidColorBrush x:Key="{x:Static SystemColors.ControlTextBrushKey}" Color="Red"/>
    </StackPanel.Resources>
    <Button Content="This is red."/>
    <Label Content="This is blue.">
        <Label.Resources>
            <SolidColorBrush x:Key="{x:Static SystemColors.ControlTextBrushKey}" Color="Blue"/>
        </Label.Resources>
    </Label>
    <TextBlock Text="TextBlock: This is still black."/>
</StackPanel>

Respuestas a la pregunta(6)

Su respuesta a la pregunta