2013-12-23 69 views
0

我想改變皮膚顏色,所以這樣做:更改/使用靜態資源跨應用

<Application.Resources> 
    <Color x:Key="AppColor">#FFFFFF</Color> 
</Application.Resources> 

,然後用它在整個應用程序,例如:

<...... BackgroundColor="{StaticResource AppColor}" ... /> 

它工作正常。但是當我嘗試改變它時,我會遇到一些問題。

Application.Current.Resources["AppColor"] = Color.FromArgb(255, 0, 255, 255); 

我得到一個未執行的錯誤。當我嘗試將其刪除,並添加一個新問題:

Application.Current.Resources.Remove("AppColor"); 
var color = Color.FromArgb(255, 0, 255, 255); 
Application.Current.Resources.Add("AppColor", color); 

我得到一個XAML錯誤,只是無論我所使用的靜態值。

如何使用顏色並更改顏色?

+3

Ue曬黑沙龍? –

+2

那沒用! – user3129221

+0

我認爲最根本的問題是靜態資源在運行時不應該改變。 [鏈接](http://stackoverflow.com/questions/13549774/how-to-bind-to-static-property-programmatically)可能會給你一個解決方案。 – Sopuli

回答

8

一種可能的解決方案是在App.xaml中資源

使用 SolidColorBrush在資源

實施例限定SolidColorBrush,與x:Name="AppBrush"

<SolidColorBrush x:Key="AppBrush" Color="#FF7DC959"/> 

如果綁定的目標是顏色那麼它會是這樣

<....BackgroundColor="{Binding Color,Source={StaticResource AppBrush}}"> 

如果你的約束性指標是的SolidColorBrush它會是這樣

<....BackgroundColor="{StaticResource AppBrush}"> 

然後你就可以在代碼

變色特性
SolidColorBrush brush = (SolidColorBrush)App.Current.Resources["AppBrush"]; 
brush.Color = Colors.DarkGray; 
2

使用DynamicResource代替StaticResource應該解決這個問題:

<...... BackgroundColor="{DynamicResource AppColor}" /> 
Application.Current.Resources["AppColor"] = Color.FromArgb(255, 0, 255, 255);