以App.xaml样式动态设置颜色值

时间:2017-08-03 10:13:44

标签: c# xamarin xamarin.forms prism

在我的Xamarin Forms应用程序中,我有多种样式,包括颜色。

的App.xaml:

<prism:PrismApplication.Resources>
<ResourceDictionary>
<Color x:Key="primary_colour">#000a3d</Color>
...

我在其他.xaml网页上使用的内容:

<ContentPage Title="Menu" BackgroundColor="{StaticResource primary_colour}">

我的问题是,如何动态更改App.xaml中的颜色值(#000a3d)(基于客户端登录会有所不同)? 我可以从App.xaml.cs文件中绑定该值吗?

1 个答案:

答案 0 :(得分:2)

使用DynamicResource来自Xamarin documentaion它说:

  

DynamicResource标记扩展类似于StaticResource   标记扩展,它们都使用字典键来获取值   来自ResourceDictionary。但是,StaticResource执行时   一个字典查找,DynamicResource维护一个链接   字典键。因此,如果与词典条目相关联   更换密钥后,更改将应用​​于可视元素。这个   允许在应用程序中进行运行时样式更改。

因此您的页面将是:

<ContentPage Title="Menu" BackgroundColor="{DynamicResource primary_colour}">

并且您更改颜色的代码将是:

Application.Current.Resources["primary_colour"] = Color.Green;