やあ、
問題に答えられるものが見つからなかったので、これが私の最初の質問になります。
初期状況
私は自分で定義しSolidColorBrush
ました<Window.Resources>
<SolidColorBrush x:Key="BackgroundBrush" Color="{DynamicResource BackgroundColor}"/>
<Color x:Key="BackgroundColor">PeachPuff</Color>
それから私は自分をバウンドBorder
しましたSolidColorBrush
<Border Background="{DynamicResource ResourceKey=BackgroundBrush}" />
アプリケーションの起動時に、背景色が保存されているxmlファイルを読み取りました。
// Some XML Loading stuff -> backgroundColor is a Color
this.Resources["BackgroundColor"] = backgroundColor;
これは魅力のように機能しました。xmlファイルの色を変更でき、境界線の背景はxmlファイルで定義した色になりました。
実際の問題
SolidColorBrush
ここで、との定義をApp.xamlファイルに移動しColor
、色を次のように変更するメソッドを変更しました。
Application.Current.Resources["BackgroundColor"] = backgroundColor;
しかし、今では境界線の背景はもう変わりません。これは、境界線のデフォルトの色です。xmlファイルに何を書き込んでも。
何が入っているかをデバッグするとき
Application.Current.Resources["BackgroundColor"]
によって割り当てられた色
Application.Current.Resources["BackgroundColor"] = backgroundColor;
実際に
Application.Current.Resources["BackgroundColor"]
しかし、背景は変更されません...
バックグラウンド
2つのウィンドウがあります。メインウィンドウと設定ウィンドウ。設定ウィンドウで、メインウィンドウのFontFamily / Type / Weight/Colorなどを変更できるようにしたいと思います。
私の最初のアプローチは、メインウィンドウリソースですべてのスタイルを定義し、変更する値を設定ウィンドウに渡して変更を読み取り、メインウィンドウリソースのリソースを更新することでした。
これは非常にうまく機能したので、スタイルをapp.xamlに移動して、そこで読み取り、更新したかったので、設定ウィンドウにスタイルを渡して、そこから再度読み取る必要はありません。