17

ユーザーが実行時にテーマを変更できる wpf アプリケーションを構築しようとしています。これまでに行ったことは、アプリケーションのすべての色が定義された resourcedictionary を作成し、xaml でこのディクショナリにバインドすることです。

以下は、リソース ディクショナリを切り替えるためのコードです。

if (System.IO.File.Exists(fileName))
{
   using (FileStream fs = new FileStream(fileName, FileMode.Open))
   {
      ResourceDictionary dic = (ResourceDictionary)XamlReader.Load(fs);
      Resources.MergedDictionaries.Clear();
      Resources.MergedDictionaries.Add(dic);
   }
}

このコードは正常に実行され、リソース ディクショナリを切り替えていることはわかっていますが、画面に既に表示されている要素は更新されません。私の質問は、新しいリソース ディクショナリを考慮して画面を更新または再バインドするにはどうすればよいかということです。

ありがとう

小さい

4

1 に答える 1

15

私の場合、次のように変更するだけで済みました。

Resources.MergedDictionaries.Clear();
Resources.MergedDictionaries.Add(dic);

に:

Application.Current.Resources.MergedDictionaries.Clear();
Application.Current.Resources.MergedDictionaries.Add(dic);
于 2010-03-04T18:10:39.447 に答える