OK、私はこれが間違っていることを受け入れる準備ができていますが、これは私がこれまでに思いついたことです.
ListView がいくつかあります。それらには FileSystemInfo 項目があります。スタイル (リソース ディクショナリから) は、アイテムのオブジェクト タイプに基づいて適用されます (アイテムのクラスに基づいて ListViewItem のスタイルを設定する方法に基づいて)。
適用される色をユーザーが変更できるようにしたいと思います。そのために、ここで提案されている方法(http://svetoslavsavov.blogspot.com/2009/07/switching-wpf-interface-themes-at.html)を使用して、編集後に ResourceDictionary をリロードします(現在、メモ帳++による) )。
これにより、ListView 項目が再描画されることはなく、色も変わりません。私は単純に 2 つの Resource xaml ファイルを使用しようとしましたが、その場所の色も更新されません。
では、コントロールの色をその場で更新し、次にユーザーがアプリを実行するときに使用するためにそれを保存するためのベスト プラクティスは何ですか?
<-- 編集 -->
具体的には、私がしたことは次のとおりです。
1) ResourceDictionary の Color を使用する Style を作成しました。そのようです:
<Color x:Key="DirItemBkgdColor1" />
<Color x:Key="DirItemBkgdColor2" />
<Style x:Key="DirListViewItem" TargetType="ListViewItem">
<Setter Property="Background">
<Setter.Value>
<LinearGradientBrush>
<GradientStop Color="{DynamicResource DirItemBkgdColor1}" Offset="0"/>
<GradientStop Color="{DynamicResource DirItemBkgdColor2}" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Style>
2) 変更したい色ごとに設定を行いました。3)私は他のものを変更しました:
this.Resources["DirItemBkgdColor1"] = FileTrackerWPF.Properties.Settings.Default.DirectoryBackColor1;
this.Resources["DirItemBkgdColor2"] = FileTrackerWPF.Properties.Settings.Default.DirectoryBackColor2;
これらのコード行をアプリケーションの OnStartup() とアプリの Config ウィンドウに配置すると、魅力的に機能します。次に、数十倍に拡張します (重い UI です)。