我有一个简单的静态属性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}" />
Run Code Online (Sandbox Code Playgroud)
这是我的简单静态属性,请注意绑定实际上仅在第一次有效。
public static double FontSizeTitle
{
get;
set;
}
Run Code Online (Sandbox Code Playgroud)
通过HandledWindow
类型的基本构造函数将其设置为 15,该大小有效,但是如果在初始化后再次将其设置为另一个大小,则视觉标题不会更新。
不确定,您使用的是什么版本的 WPF。WPF 4.5 现在支持静态属性的绑定和属性更改通知。
有关完整讨论,请参阅此博客文章。
因此,您的 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)));
}
}
}
Run Code Online (Sandbox Code Playgroud)
XAML 中的 Binding 将变为:
FontSize="{Binding Path=(local:HandledWindow.FontSizeTitle), Mode=OneWay}"
Run Code Online (Sandbox Code Playgroud)
标签:Code,静态,绑定,HandledWindow,static,FontSizeTitle,WPF,属性 From: https://www.cnblogs.com/webenh/p/18216825