Comment faire la couleur par défaut, la police de caractères de la famille et de la taille de la police pour un TextBlock et de l'Étiquette, se mettre dans une application WPF?

Edit: je suppose que la question n'était pas indiqué très clairement. Il en fait compose de 4 distinctes:

  1. Comment un TextBlock obtenir sa couleur par défaut, si le client l'application ne fournit pas de style, par programme ou par le biais de xaml?
  2. Comment un Label obtenir sa couleur par défaut?
  3. Comment un TextBlock obtenir par défaut de la taille de la police et de la police de la famille, si le client l'application ne fournit pas de style, par programme ou par le biais de xaml?
  4. Comment un Label obtenir par défaut de la taille de la police et de la police de la famille?

BTW, les questions ne sont pas sur la façon de changement ou de définir des styles pour la couleur/taille de la police/police de caractères de la famille d'un TextBlock ou un Label, même s'ils sont en quelque sorte liés. Je pense que je connaissais déjà la réponse pour le #2, qui est un Label obtient sa couleur de SystemColors.ControlTextBrushKey et en substituant ConrolTextBrushKey comme suit:

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

Vous seriez en mesure de "globalement" changer de couleur pour Labels. Après quelques recherches, je crois que j'ai aussi trouver la réponse à #1: Un TextBlock hérite de la sa couleur de premier plan de son contenant Window, qui, par défaut, obtient son Foreground couleur de SystemColors.WindowTextBrushKey. En définissant une couleur pour le WindowTextBrush comme suit:

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

Vous seriez en mesure de changer le "premier plan", couleur pour la TextBlocks à l'intérieur de la Window.

Question #3 et #4 restent des énigmes pour moi, mais je suis en supposant qu'ils ont à faire avec la SystemFonts.

Espérons que cela a du sens. J'ai vraiment envie de connaître les réponses qu'ils ont été me tracasse depuis un moment. Merci beaucoup!

Ci-dessous est le message original:


Si vous regardez dans le style d'un Label dans le thème (par exemple "aero.normalcolor.xaml") qui est livré avec Windows, vous pouvez trouver

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

Qui définit la couleur d'un Label. Mais il n'est pas le cas à l' FontSize propriété est spécifiée dans le style, ce qui je suppose a quelque chose à voir avec la SystemFonts. Pour un TextBlock, il a l'air encore plus mystérieux que le style dans "aero.normalcolor.xaml" n'a que 4 lignes:

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

Où un Label ou un TextBlock obtenir les valeurs de sa couleur et de taille de police/de la famille, si l'application ne permet pas de définir tout, et où sont ces crochets en WPF?

Edit:

C'est un essai sur route en essayant de définir les TextBlock de la couleur par SystemColors.ControlTextBrush (en supposant que c'est là un TextBlock obtient sa couleur par défaut à partir, ce qui semble être faux):

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

Après quelques recherches, j'ai trouvé TextElement.

OriginalL'auteur mobileTofu | 2011-12-12