Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#UWP动态更改全局字体_C#_Fonts_Uwp_Resources - Fatal编程技术网

C#UWP动态更改全局字体

C#UWP动态更改全局字体,c#,fonts,uwp,resources,C#,Fonts,Uwp,Resources,我在App.xaml中创建了一个全局字体资源,如下所示: <Application.Resources> <ResourceDictionary> <FontFamily x:Key="GlobalFontLight">Arial</FontFamily> <FontFamily x:Key="GlobalFont">Segoe UI</FontFamily> <

我在
App.xaml
中创建了一个全局字体资源,如下所示:

<Application.Resources>
    <ResourceDictionary>
        <FontFamily x:Key="GlobalFontLight">Arial</FontFamily>
        <FontFamily x:Key="GlobalFont">Segoe UI</FontFamily>
        <FontFamily x:Key="GlobalFontBold">Caibri</FontFamily>
    </ResourceDictionary>
</Application.Resources>
<TextBlock Text="{Binding Font, Source={StaticResource CustomUISettings}}" />

但是什么也没有发生,
TextBlock
仍然使用旧字体。如果我在
InitializeComponent()之前运行此代码然后它按我的要求工作,但在那之后没有。有人知道我做错了什么吗?如何实现字体的这种动态更改?

因为UWP不支持
DynamicSource
这是一个相当大的问题。
StaticResource
meresource
扩展不会将您保存在此处,因为它们仅在评估时绑定,并且在基础资源更改时不会更新已评估的属性

第一个选项是向后导航并再次导航到同一页面,以便重新加载控件并重新评估资源

如果你想要更具活力的东西,请退房。如果您遵循该解决方案,则可以创建一个实现
INotifyPropertyChanged
的类,该类将包含类型为
FontFamily
的属性,将此实例存储在
StaticResource
中,然后使用绑定而不是
StaticResource
,如下所示:

<Application.Resources>
    <ResourceDictionary>
        <FontFamily x:Key="GlobalFontLight">Arial</FontFamily>
        <FontFamily x:Key="GlobalFont">Segoe UI</FontFamily>
        <FontFamily x:Key="GlobalFontBold">Caibri</FontFamily>
    </ResourceDictionary>
</Application.Resources>
<TextBlock Text="{Binding Font, Source={StaticResource CustomUISettings}}" />

很高兴它有帮助:-)。快乐编码!