UWP以编程方式更改ResourceDictionary

时间:2017-10-31 04:49:39

标签: xaml uwp windows-10

我正在设计一个从REST API中检索颜色的应用程序,需要使用这些来主题应用程序。我试图在我的ResourceDictionary中定义样式内部的颜色,因为我需要设置的颜色之一是按钮的PointerOver VisualState。我目前正在使用以下方法更改SolidColorBrushes。

App.Current.Resources["PrimaryBrush"] = myNewSolidColorBrush;

当我将元素的背景直接绑定到此StaticResurce时,颜色可以完美地工作。但是,当我将一个样式移动到我的单独文件中时,使用ResourceDictionary并将样式中的背景绑定到我正在更改的SolidColorBrush资源。

我的问题是,当我以编程方式更改SolidColorBrush时,我的样式中的绑定不会更新!有没有办法强制资源字典重新评估其绑定或以编程方式更改我定义的样式中的setter值?

1 个答案:

答案 0 :(得分:1)

  

我的问题是,当我以编程方式更改SolidColorBrush时,我的样式中的绑定不会更新!

<ResourceDictionary>
    <SolidColorBrush x:Key="PrimaryBrush" Color="Yellow"/>
</ResourceDictionary>

问题是您已将新的myNewSolidColorBrush对象分配给PrimaryBrush,而StaticResource不支持动态更改。对于您的要求,您可以修改PrimaryBrush对象的属性。

(App.Current.Resources["PrimaryBrush"]as SolidColorBrush).Color = Colors.Red;