gpt4 book ai didi

c# - 如何动态更改 UWP 的 XAML 资源值

转载 作者:行者123 更新时间:2023-12-04 01:59:33 24 4
gpt4 key购买 nike

我有一个全局双资源,用于我的 UI,通过“StaticResource”扩展设置字体大小。

<Application.Resources>
<ResourceDictionary>
<x:Double x:Key="MyFontSize">20</x:Double>
</ResourceDictionary>
</Application.Resources>

然后我做:

<TextBlock FontSize="{StaticResource MyFontSize}" Text="Something"><TextBlock>

但我希望此设置是动态的,以便用户可以在运行时通过我的应用程序上的设置更改它,而无需重新启动它。我听说 WPF 中曾经有一个“DynamicResource”扩展来解决这个问题。但是 UWP 中不存在该扩展。

那么在UWP中有什么方法呢?

最佳答案

您可以创建一个实现 INotifyPropertyChanged 并具有您的 FontSize 属性的类:

public class UserSettings : INotifyPropertyChanged
{
private double _fontSize = 20;
public double FontSize
{
get { return _fontSize; }
set { _fontSize = value; OnPropertyChanged(); }
}

protected void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}

现在,在应用程序启动期间创建此类的实例并将其存储为 Resource:

Application.Current.Resources["UserSettings"] = new UserSettings();

现在使用数据绑定(bind)来绑定(bind)所需 TextBlockFontSize 属性:

<TextBlock FontSize="{Binding FontSize, Source={StaticResource UserSettings}}"
Text="Something" />

在应用程序设置中,您可以像这样修改值:

( ( UserSettings )Application.Current.Resources["UserSettings"] ).FontSize = newFontSize;

但请记住,这会带来性能损失,最好静态地执行此操作并要求用户重置应用程序。更好的是 - 让我们使用系统范围的字体大小设置,因为如果用户喜欢更大的字体,她可能会全面地想要。

关于c# - 如何动态更改 UWP 的 XAML 资源值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48269921/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com