好的,我已经准备好接受我做错了,但这就是我到目前为止的想法。
我有几个 ListView。它们中有 FileSystemInfo 项。样式(来自资源字典)基于项目的对象类型应用(基于如何根据项目的类设置 ListViewItem 的样式)。
我想让用户能够更改正在应用的颜色。为此,我使用此处建议的方法(http://svetoslavsavov.blogspot.com/2009/07/switching-wpf-interface-themes-at.html)在编辑后重新加载 ResourceDictionary(目前,通过 Notepad++ )。
这不会导致 ListView 项目重绘并且颜色不会改变。我试图简单地使用两个 Resource xaml 文件,并且也不会更新颜色。
那么,更新控件颜色的最佳实践是什么,然后将其保存以供用户下次运行应用程序时使用?
<-- 编辑-->
具体来说,我所做的是:
1) 我制作了一个使用 ResourceDictionary 中的颜色的样式。像这样:
<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() 和我的应用程序的配置窗口中,它就像一个魅力。现在将其扩展几十个(这是一个沉重的 UI)。