我希望能够更改应用的主题,即使应用已启动。
所以我定义了一个资源:
<Application.Resources>
<SolidColorBrush x:Key="AppBrush" Color="#AAAAAA"/>
</Application.Resources>
在整个应用中使用它:
<... Background="{StaticResource AppBrush}" .. />
我可以在App
的构造函数中更改它:
((SolidColorBrush)Resources["AppBrush"]).Color = color;
现在我可以改变它,但是用户必须重新启动应用才能使更改生效。我不能在应用程序内部的某处使用最后一行代码我收到内存错误。
如何从应用内部更改应用主题并查看更改?
答案 0 :(得分:0)
发生错误是因为App.xaml中定义了AppBrush资源,并且您希望使用相同的代码从App.xaml外部访问它。您必须稍微更改代码以明确告诉应用程序在App.xaml中找到资源:
((SolidColorBrush)App.Current.Resources["AppBrush"]).Color = color;
如果不这样做,应用程序将最终在当前页面中搜索AppBrush资源,然后无法找到它。
答案 1 :(得分:0)
不幸的是,Windows Phone不支持DynamicResource。所以你有两个选择:
1)接受限制并要求重新启动 2)将内容(无论可能是什么,网格背景,按钮等)绑定到返回颜色的viewModel属性。然后你可以改变颜色并调用notifypropertychanged来让UI立即更新。
如果您不清楚如何实施(2),请告诉我。