我需要在我的应用程序中使用一些通用颜色,它们基于系统颜色,根据活动主题进行更改。所以我相信我需要一些IValueConverters,每个IValueConverters在给定系统颜色画笔时都会返回画笔。
但我在哪里放逻辑?在我看来,我可能有两个选择。
选项1)将SolidColorBrush放入主题资源字典中,该字典绑定到某些系统颜色并将它们转换为新的画笔。这个我试过,它似乎工作,但我如何从代码隐藏引用这些新的SolidColorBrush。
选项2)创建一个类似于SystemColors类的类。我不知道我是怎么做的。 SystemRolourceKey和SystemColors类中的Brush之间的关系是什么?他们是如何联系的?
最诚挚的问候, 的Jesper
答案 0 :(得分:0)
1。例如
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Test">
<SolidColorBrush x:Key="Brush1" Color="Green"/>
</ResourceDictionary>
ResourceDictionary dict = new ResourceDictionary();
dict.Source = new Uri("pack://application:,,,/TestDictionary.xaml");
Brush brush1 = dict["Brush1"] as SolidColorBrush;
2。你不能使用SystemResourceKeys
,它们是内部的,但可以重用SystemColors类中的键来构建你的字典,你用的是什么并不重要, key可以是任何对象,this question可能是有意义的。