簡體   English   中英

跨應用更改/使用StaticResource

[英]Change/use StaticResource across app

我想更改膚色,所以也這樣做:

<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錯誤。

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

一種可能的解決方案是在資源中使用SolidColorBrush

示例使用App.xaml資源中的x:Name="AppBrush"定義SolidColorBrush示例

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

如果您的綁定目標是顏色,那么它將是這樣

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

如果您的綁定目標是SolidColorBrush,它將像這樣

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

然后您可以在代碼中更改Color屬性

SolidColorBrush brush = (SolidColorBrush)App.Current.Resources["AppBrush"];
brush.Color = Colors.DarkGray;

使用DynamicResource而不是StaticResource應該可以解決此問題:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM