好的,我已经准备好接受我做错了,但这是我到目前为止所提出的。
我有几个ListView。它们中包含FileSystemInfo项。根据项目的对象类型(基于How to set the Style of a ListViewItem based on the class of the item)应用样式(来自资源字典)。
我想让用户能够更改正在应用的颜色。为此,我使用此处建议的方法(http://svetoslavsavov.blogspot.com/2009/07/switching-wpf-interface-themes-at.html)在编辑后重新加载ResourceDictionary(目前,通过Notepad ++)。
这不会导致ListView项目重绘并且颜色不会更改。我试图简单地使用两个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窗口中,它就像一个魅力。现在要扩展几十个(这是一个沉重的用户界面)。
答案 0 :(得分:1)
我将如何做到这一点: