¿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" paraLabel
s. 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 elTextBlock
s 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 elFontSize
a 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>