首页 > 解决方案 > 如何通过绑定 (MVVM) 设置 TextBlock 的 FontStyle

问题描述

我截取的 XAML 代码:

<TextBlock Text="{Binding Name}" Foreground="{Binding FontColor}" FontStyle="{Binding FontStyleTreeItem}"/>

截取代码类 TreeItem:

public System.Windows.FontStyles FontStyleTreeItem {get;set}

我想分配属性“FontStyleTreeItem”,例如:

treeItem.FontStyleTreeItem = System.Windows.FontStyles.Italic;

但这不起作用,因为“System.Windows.FontStyles”是静态的。但我不知道如何给出一个好的解决方案来设置上述属性。

我还尝试将该属性设置为 FontStyle,因此末尾没有s (FontStyle s),但是文本块的字体样式不会改变。

public FontStyle FontStyleTreeItem { get { return FontStyle.Italic; } }

有人能看到我错过了什么吗?

已经谢谢了。

标签: c#wpfxaml

解决方案


属性的类型应该是System.Windows.FontStyle。它仍可能返回静态值,例如FontStyles.Italic

public System.Windows.FontStyle FontStyleTreeItem { get { return System.Windows.FontStyles.Italic; } }

如果您这样定义属性:

public System.Windows.FontStyle FontStyleTreeItem { get; set; }

...您可以将其设置为任何FontStyle值,例如:

FontStyleTreeItem = FontStyles.Italic;

如果在运行时动态设置,需要实现INotifyPropertyChanged接口才能改变字体样式。


推荐阅读