我有一个简单的静态属性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,该大小正常工作,但如果在初始化后再次将其设置为其他大小,则视觉标题将不会更新。
答案 0 :(得分:4)
不确定,您使用的是哪个版本的WPF。 WPF 4.5现在支持静态属性的绑定和属性更改通知。
有关完整讨论,请参阅此博客post。
因此,您的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;
if (StaticPropertyChanged != null)
StaticPropertyChanged(null, new PropertyChangedEventArgs("FontSizeTitle"));
}
}
}
XAML中的Binding将成为:
FontSize="{Binding Path=(local:HandledWindow.FontSizeTitle), Mode=OneWay}"