2017-08-03 85 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