2017-08-03 55 views
1

在我的Xamarin Forms应用程序中,我有多种样式,包括颜色。在App.xaml风格中动态设置颜色值

的App.xaml:

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

我使用的是其他的.xaml页,其中:

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

我的问题是,我怎么可以改变颜色值(#000a3d)的应用程序.xaml动态地(根据客户端登录会有所不同)? 我可以从App.xaml.cs文件绑定该值吗?

回答

2

使用DynamicResource,从Xamarin documentaion它说:

的DynamicResource标记扩展类似于该静态资源 标记扩展都使用字典键从ResourceDictionary中取一个值 。但是,虽然StaticResource执行单个字典查找 ,但DynamicResource保留到字典关键字 的链接。因此,如果与 关联的字典条目被替换,该更改将应用​​于可视元素。这个 允许在应用程序中进行运行时风格的改变。

因此您的网页将是:

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

和你的代码来改变颜色应该是:

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

完美!谢谢。它工作正常。 – 82skynet