1

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 です)。

4

1 に答える 1

1

これが私がそれを行う方法です:

  1. 色を必要とするすべてのコントロールが同じ動的リソースから色を取得していることを確認してください。
  2. ユーザーが色を選択できるようにします。拡張 WPF ツールキットにはカラー ピッカーがあります
  3. ユーザー固有の設定ファイルに色を保存します。
  4. 色を選択するとき、およびアプリケーションの読み込み時に、保存された設定でリソースをオーバーライドします。
于 2013-03-05T15:28:12.177 に答える