我需要在我的应用程序中有一些通用的颜色,这些颜色是基于系统颜色的,这些颜色是根据活动主题变化的。因此,我相信我需要一些IValueConverters,当给一个系统颜色刷时,每个人返回一个刷。
但我该把逻辑放在哪里呢?在我看来,我可能有两个选择。
选项1)将SolidColorBrush(es)放在主题资源字典中,它绑定到某些系统颜色,并将它们转换为新的画笔(Es)。这是我尝试过的,而且看起来很有效,但是我如何从代码背后引用这些新的SolidColorBrush(es)。
选项2)创建一个类似于SystemColors类的类。我不太知道我是怎么做的。SystemResourceKey和SystemColors类中的笔刷之间的关系是什么?它们是如何联系的?
向你问好,杰斯珀
发布于 2011-05-01 07:14:21
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类中的键来构建您的字典,您使用什么并不重要,密钥可以是任何对象,this question可能会感兴趣。
https://stackoverflow.com/questions/2544187
复制相似问题