2017-11-10 3 views
0

私はボタンの上にそれを使用している私のWPFプロジェクトでapp.xamlWPFは - どのように私はそれのリソースを変更すると、ボタンの色を変更することができ

<Color x:Key="myColor">#1ba1e2</Color> 

の私のリソース上でこれを持っている:

void win_Loaded(object sender, RoutedEventArgs e) 
{ 
btn.Background = (SolidColorBrush)Application.Current.Resources["mySolidColor"]; 
} 

私は "mySolidColor" のリソースを変更 は、ボタンは、新しい色を使用していない

void changeColor(Colors color) 
{ 
    Application.Current.Resources["mySolidColor"] = new SolidColorBrush(color); 
} 

ボタンのような1000個以上のオブジェクトを追加していると考えてください。リソースを色として使用していますが、色の変化、過去のオブジェクトの新しい色の取得などが可能ですか?

+2

DynamicResourcesとしてバインドを使用します。 – pix

+1

[WPFの動的リソースを使用してコントロールの背景色を設定する]の複製がありますか?(https://stackoverflow.com/questions/17502467/set-control-background-color-using-dynamic-resource-in-wpf) – pix

+2

バックグラウンドではなく、XAMLのバックグラウンドです: '

答えて

0

あなたは元を必要とするすべてのオブジェクトターゲットにカスタムスタイルを作成することができます:私は、これはあなたが何ができるかのほんの一例になりますあなたのコードを知らないボタン

<Color x:Key="YourColorNameKey">#1ba1e2</Color> 

    <Style TargetType="{x:Type Button}"> 
     <Setter Property="Background" Value="{DynamicResource YourColorNameKey}"/> 
    </Style> 
+0

はい、私はこのように提供する必要があります、ありがとう –

0

を:

<ResourceDictionary> 
    <ResourceDictionary.MergedDictionaries> 
     <ResourceDictionary Source="myResourcePath1"/> 
    </ResourceDictionary.MergedDictionaries> 
</ResourceDictionary> 
<Style TargetType="{x:Type Button}" x:Key="myButtonStyle"> 
    <Setter Property="Background" Value ="{DynamicResource keyOfMyFavouriteColor}"/> 
</Style> 

もちろん、これはリソースファイル内にすべてのソリッドカラーブラシを書く必要があります(多くの色とテンプレートを定義した場合は最適です)。この方法で簡単にすべてのコントロールをスタイルすることができます。500個のボタンを持っていても、すべて同じ外観になります。

+0

ありがとう、はい私はすべての私のソリッドカラーブラシをリソース内に記述する必要があります –

関連する問題