我有一个奇怪的问题,让我难过。我正在修改WPF日历控件模板,由于我在下面解释的原因,我必须使用Color
资源而不是SolidColorBrush
资源作为我的文本颜色。现在,我的Color
资源看起来像这样:
<!-- My Colors -->
<Color x:Key="MyTextColor">Blue</Color>
现在我想将Color
资源绑定到父属性,但Color
对象没有Binding
属性。那么,我将如何绑定此资源?谢谢你的帮助。
请注意为什么我必须使用Color资源: WPF日历控件在几个地方动画显示鼠标悬停的文本,每个动画使用一个名为{ {1}}。我不能用资源引用替换画笔,因为我想保留动画,这意味着我必须保留名称。但我可以替换画笔颜色,就像我在名为 TextColor 的画笔中所做的那样:
SolidColorBrush
答案 0 :(得分:5)
我选择了smoura的答案是正确答案,因为它确实回答了我提出的问题。但是,我想我可能已经提出了错误的问题,这就是解决这个问题的更好方法。
我决定使用资源,然后尝试绑定该资源。更好的方法是直接绑定Color
属性。为此,我创建了一个名为IValueConverter
的简单BrushToColorConverter
,然后使用它将命名画笔的颜色绑定到我正在创建的Foreground
的{{1}}属性。标记看起来像这样:
UserControl
这种方法完全消除了我之前使用过的<!-- Modification: Changed template brush color -->
<SolidColorBrush x:Name="TextColor" Color="{Binding Path=Foreground, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}, Converter={StaticResource BrushToColorConverter}}" />
资源。它更简单,我怀疑,更有效率。
答案 1 :(得分:0)
我们的软件遇到了同样的问题,并提出了这个解决方案。基本上,您创建了一个类,该类实现了WPF的静态资源类的扩展,该类处理绑定,然后在XAML代码上使用它。非常好用。