我手头有一个涉及大量视图和用户控件的大项目。另外,我想将每个元素的 FontFamily 设置为某种字体。
这适用于大多数用户控件,如文本块、按钮和标签。遗憾的是,这不适用于文本框。它们保持不变。
在创建整个 GUI 之前,我将覆盖包含文本的元素的大部分元数据:
TextElement.FontFamilyProperty.OverrideMetadata(typeof(TextElement),
new FrameworkPropertyMetadata(new FontFamily("Calibri")));
TextBlock.FontFamilyProperty.OverrideMetadata(typeof(TextBlock),
new FrameworkPropertyMetadata(new FontFamily("Calibri")));
经过一番搜索,我用同样的方法找到了这篇文章:http ://blog.davidpadbury.com/
它在最后明确指出:
“在上图中,您将看到我们已经成功更改了文本块、标签和按钮上的字体。不幸的是,TextBox 内的字体保持不变,这是因为它从其基类 Control 接收了 FontFamily 属性。控件将自己添加为 TextElement FontFamilyProperty 的所有者,但指定它自己的元数据,然后我们无法覆盖。”
它还建议创建一个控件模板,然后设置 fontFamily。还有其他方法吗?我想在开始时以编程方式设置 fontFamily,而不使用 XAML 或创建 controlTemplate 并将其用作每个文本框的基本模板。
提前致谢。