我希望有人能对我的问题有所了解,因为我到处搜索并且找不到对此的解释或解决方案。
为了解释这个问题,我创建了一个名为 Label 的类,它继承自 TextBlock,我想覆盖默认的前景画笔、字体粗细、字体大小和字体系列;除了前景之外,所有覆盖都起作用(我可以毫无问题地覆盖背景,因此它是特定于前景属性的东西)。
创建一个新的 WPF 应用程序并创建这个简单的类:-
namespace WpfApplication
{
public class Label : TextBlock
{
static Label()
{
ForegroundProperty.OverrideMetadata(typeof(Label), new FrameworkPropertyMetadata(Brushes.Red));
FontWeightProperty.OverrideMetadata(typeof(Label), new FrameworkPropertyMetadata(FontWeights.Bold));
FontSizeProperty.OverrideMetadata(typeof(Label), new FrameworkPropertyMetadata(50.0));
FontFamilyProperty.OverrideMetadata(typeof(Label), new FrameworkPropertyMetadata(new FontFamily("Calibri")));
}
}
}
在 MainWindow.xaml 中创建这个新标签类的实例:-
<Grid>
<local:Label Text="TEST" />
</Grid>
您应该看到 Label 没有采用新的 Foreground 默认值,但在 SNOOP 中查看它仍然继承它的值。
据我所知,任何依赖属性都可以被覆盖,所以任何帮助都将不胜感激!