如何在 XAML 中将颜色转换为画笔? [英] How do I convert a Color to a Brush in XAML?

查看:21
本文介绍了如何在 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆