如何轻松地允许用户更新使用的样式是XAML(UWP)中的元素

这适用于Windows 10 UWP。 我需要允许用户更新与整个应用程序中使用的元素相关联的样式的值(即允许用户更改各种文本块的字体大小,背景颜色堆栈面板等)。

我目前将所有样式都放在一个单独的文件中。

我的App.xaml如下:

          

我的Styles.xaml (部分)如下:

                   

我在整个应用程序中使用这样的控件来引用这些样式:

  

我创建了一个设置页面(settings.xaml),其中包含用于更新各种样式设置的文本框。

但我不确定如何将这些绑定到styles.xaml文件上各种样式的设置,以便更新样式,并在用户更改值时更新引用样式的控件。

   

有人可以指出我正确的方向吗? 我试图用尽可能少的(或没有代码)来做到这一点。

不幸的是,这种用户定义的样式在UWP中并不容易获得。 但是,您可以使用数据绑定实现一种样式解决方案。

第一步是创建一个像CustomUISettings这样的类,它实现了INotifyPropertyChanged并具有HeaderFontSize等属性。

现在,在app start上创建此类的实例并将其添加为app资源:

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

现在,您可以在代码中的任何位置绑定到此类中的属性:

  

您必须使用经典的{Binding}标记扩展,因为{x:Bind}不支持Source设置。

要修改UI设置,您只需在任何地方检索实例,并根据需要设置属性:

 var customUISettings = (CustomUISettings)Application.Current.Resources["CustomUISettings"]; customUISettings.HeaderFontSize = 50; 

您必须确保CustomUISettings类中的所有属性CustomUISettings触发PropertyChanged事件。 您可以在此处查看如何实现INotifyPropertyChanged接口。