我有一个简单的静态属性FontSizeTitle
它应该用于所有实例中的程式化标题HandledWindow
类型,并在更改属性后同时从同一静态属性进行更新,而无需显式通知。通过设置面板或任何会更改属性的方式来更改并更新所有窗口的所有标题的字体大小。
下面是我的 XAML 风格化标题的代码,它是HandledWindow
,它是标准 XAML 样式页面的一部分,在启动时由另一个库的资源字典加载。所以它适用于所有HandledWindow
将出现在应用程序中的实例:
<TextBlock x:Name="TitleText"
TextWrapping="Wrap"
Text="Window Title"
FontSize="{Binding Source={x:Static UI:HandledWindow.FontSizeTitle}, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}"
VerticalAlignment="Stretch"
FontFamily="{DynamicResource FontFamiliy}" />
这是我的简单静态属性,请注意,绑定实际上仅在第一次时有效。
public static double FontSizeTitle
{
get;
set;
}
通过基本构造函数HandledWindow
输入它设置为 15,该大小有效,但如果在初始化后再次将其设置为另一个大小,视觉标题将不会更新。
不确定您使用的是哪个版本的 WPF。 WPF 4.5 现在支持静态属性的绑定和属性更改通知。
参考这个博客post http://10rem.net/blog/2011/11/29/wpf-45-binding-and-change-notification-for-static-properties进行充分讨论。
所以,你的 HandledWindows 类将变成这样:
public static class HandledWindow
{
private static double _fontSizeTitle;
public static event EventHandler<PropertyChangedEventArgs> StaticPropertyChanged;
static HandledWindow()
{
FontSizeTitle = 15;
}
public static double FontSizeTitle
{
get { return _fontSizeTitle; }
set
{
_fontSizeTitle = value;
StaticPropertyChanged?.Invoke(null, new PropertyChangedEventArgs(nameof(FontSizeTitle)));
}
}
}
XAML 中的 Binding 将变为:
FontSize="{Binding Path=(local:HandledWindow.FontSizeTitle), Mode=OneWay}"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)