如何在 XAML 中将颜色转换为画笔? [英] How do I convert a Color to a Brush in XAML?
问题描述
我想将 System.Windows.Media.Color 值转换为 System.Windows.Media.Brush.颜色值数据绑定到 Rectangle 对象的 Fill 属性.Fill 属性需要一个 Brush 对象,所以我需要一个 IValueConverter 对象来执行转换.
I want to convert a System.Windows.Media.Color value to a System.Windows.Media.Brush. The color value is databound to a Rectangle object's Fill property. The Fill property takes a Brush object, so I need an IValueConverter object to perform the conversion.
WPF 中是否有内置转换器,还是我需要创建自己的转换器?如果有必要,我该如何创建自己的?
Is there a built-in converter in WPF or do I need to create my own? How do I go about creating my own if it becomes necessary?
推荐答案
看来您必须创建自己的转换器.这是一个简单的例子:
It seems that you have to create your own converter. Here a simple example to start:
public class ColorToSolidColorBrushValueConverter : IValueConverter {
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
if (null == value) {
return null;
}
// For a more sophisticated converter, check also the targetType and react accordingly..
if (value is Color) {
Color color = (Color)value;
return new SolidColorBrush(color);
}
// You can support here more source types if you wish
// For the example I throw an exception
Type type = value.GetType();
throw new InvalidOperationException("Unsupported type ["+type.Name+"]");
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
// If necessary, here you can convert back. Check if which brush it is (if its one),
// get its Color-value and return it.
throw new NotImplementedException();
}
}
要使用它,请在资源部分声明它.
To use it, declare it in the resource-section.
<local:ColorToSolidColorBrushValueConverter x:Key="ColorToSolidColorBrush_ValueConverter"/>
并在绑定中将其用作静态资源:
And the use it in the binding as a static resource:
Fill="{Binding Path=xyz,Converter={StaticResource ColorToSolidColorBrush_ValueConverter}}"
我没有测试过.如果它不起作用,请发表评论.
I have not tested it. Make a comment if its not working.
这篇关于如何在 XAML 中将颜色转换为画笔?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!