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 umLabel
bter 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 paraLabel
s. 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 oTextBlock
s 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>