WPF基于SystemColors的通用颜色

时间:2010-03-30 09:44:04

标签: wpf systemcolors

我需要在我的应用程序中使用一些通用颜色,它们基于系统颜色,根据活动主题进行更改。所以我相信我需要一些IValueConverters,每个IValueConverters在给定系统颜色画笔时都会返回画笔。

但我在哪里放逻辑?在我看来,我可能有两个选择。

选项1)将SolidColorBrush放入主题资源字典中,该字典绑定到某些系统颜色并将它们转换为新的画笔。这个我试过,它似乎工作,但我如何从代码隐藏引用这些新的SolidColorBrush。

选项2)创建一个类似于SystemColors类的类。我不知道我是怎么做的。 SystemRolourceKey和SystemColors类中的Brush之间的关系是什么?他们是如何联系的?

最诚挚的问候, 的Jesper

1 个答案:

答案 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可能是有意义的。