Q120. App.xamlで定義したリソースを動的に変更したい

A.App.Current.Resources で、App.xaml に定義したリソースを参照できるので、リソースの中身をコードビハインドでごっそり入れ替えてしまえばいいです。


久々のWPFネタです。最近某所から要求があったので、少しサンプルを考えてみました。


TextBlock と Button だけ貼り付けた簡単な画面です。TextBlock のスタイルは App.xaml 内で定義されたリソースを設定してます。


次に画面の XAML です。


上記 XAML の 22行目では TextBlock のスタイルを DynamicResource を使って指定してます。DynamicResource は名前どおりの動的リソース参照で、スタイルを動的に変更したい場合に使用します。

関連項目:DynamicResource のマークアップ拡張機能


最後にコードビハインドです。Button.Click イベント内で App.xaml 内で定義したリソースをごっそり入れ替えてしまいます。

Visual Basic 版のコード

Visual Basic のコードビハインドも用意しました。


以上、何かの参考になれば幸いです。


WPF FAQ の目次に戻る