Como a cor, a família e o tamanho da fonte padrão de um TextBlock e Label são definidos em um aplicativo WP

Edit: Eu acho que a pergunta não foi declarada com muita clareza. Na verdade, ele compõe de 4 diferentes:

Como é que umTextBlock obter a cor padrão, se o aplicativo cliente não fornecer nenhum estilo, seja de forma programática ou através do xamComo é que umLabelbter a cor padrãComo é que umTextBlock obter o tamanho da fonte e a família de fontes padrão, se o aplicativo cliente não fornecer nenhum estilo, seja de forma programática ou através do xamComo é que umLabel obter o tamanho da fonte e a família de fontes padrã

BTT, as perguntas não são sobre comomudanç ou defina estilos para a cor / tamanho da fonte / família de fontes de umTextBlock ouLabel, embora estejam de alguma forma relacionados. Acho que já sabia a resposta para o nº 2, que é umLabel obtém sua cor de SystemColors.ControlTextBrushKey e substituindoConrolTextBrushKey igual a

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

Você poderá "globalmente" mudar de cor paraLabels. Após algumas pesquisas, acho que também encontro a resposta para o número 1: ATextBlock herda a cor de primeiro plano de seu conteúdoWindow, que por padrão recebe seuForeground cor de SystemColors.WindowTextBrushKey. Definindo uma cor para o WindowTextBrush da seguinte forma:

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

Você poderá alterar a cor "primeiro plano" para oTextBlocks dentro doWindow.

s perguntas 3 e 4 continuam sendo quebra-cabeças para mim, mas suponho que elas tenham a ver com o SystemFonts.

Espero que isso faça sentido. Eu realmente gosto de saber as respostas, pois elas estão me incomodando há um tempo. Muito Obrigado

Abaixo é o post original:

Se você olhar para o estilo de umLabel no tema (por exemplo "aero.normalcolor.xaml") fornecido com o Windows, você pode encontrar

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

Que define a cor para umLabel. Mas não há onde oFontSize propriedade @ é especificada no estilo, que suponho ter algo a ver com o SystemFonts. ParaTextBlock, parece ainda mais misterioso, já que o estilo em "aero.normalcolor.xaml" possui apenas 4 linhas:

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

Onde faz umLabel ouTextBlock obtenha os valores para sua cor e tamanho / família da fonte, se o aplicativo não definir nenhum e onde estão esses ganchos no WP

Editar

Este é um test-drive tentando definir oTextBlock cor através deSystemColors.ControlTextBrush (assumindo que é onde umTextBlock obtém sua cor padrão, que parece ser falsa):

<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>

questionAnswers(3)

yourAnswerToTheQuestion