嗨,这是一个让我疯狂几天的问题。
简单地说,每当我在从 TextBlock 控件派生的任何东西上声明前景色时,前景色在设计时被识别,但在运行时它总是默认为黑色。
就好像在控件上忽略了前景属性。
因此,例如,通常我希望以下内容呈现带有白色文本的按钮:
<Button x:Name="MyButton" Content="Hello World" Foreground="White" ... />
但是,这会呈现一个按钮,并且前景文本颜色为黑色。它有效地忽略了 Foreground setter 属性。
使其按预期工作的唯一方法是执行以下操作:
<Button x:Name="MyButton" .... >
<TextBlock Text="Hello World" Foreground="White"/>
</Button>
这种方式有效,并且按钮可以正确呈现白色文本。但我知道我不应该像这样明确定义按钮文本块。
从文本块派生的任何内容都会发生相同的行为。
有谁知道为什么会这样?
更新: 我已经检查了应用于 TextBox 的样式的解决方案。我在 TextBlock 上定义了自己的样式:
<Style x:Key="TextBlockText" TargetType="{x:Type TextBlock}">
<Setter Property="Foreground" Value="#FF63798F"/>
<Setter Property="FontSize" Value="14"/>
<Setter Property="VerticalAlignment" Value="Bottom"/>
<Setter Property="HorizontalAlignment" Value="Stretch"/>
</Style>
如您所见,它定义了前景的值。但是,当我从资源字典中删除此样式时,上述问题仍然存在。
其他信息是我正在使用 MahApps.Metro 库,我想知道这是否会导致问题。
有没有人有任何其他想法?甚至想去哪里调查??