在wpf中绑定渐变颜色

时间:2014-04-02 06:01:53

标签: c# wpf binding colors

我必须绑定渐变颜色属性。在这我使用转换器。这是绑定的xaml代码

<GradientStop Color="{Binding Namevalue, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource nametocolorconverter}}"/>

nametocolorconverter的代码

class nametocolorconverter: IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
       Brush brw = new Brush();
        if(value == "Blue") brw = Colors.Blue;
        elseif(value=="Green") brw = Colors.Green;
        else brw=Colors.Red;
   return brw;

    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return null;
    }

以上代码无效。我没有得到理想的颜色。

1 个答案:

答案 0 :(得分:0)

您的代码甚至无法编译。

在Convert方法中,您声明类型为brw的局部变量Brush并尝试创建新的Brush实例。除此之外,由于Brush是一个抽象类,所以你不会工作,你应该有一个Color类型的变量:

Color color;
if (value == "Blue")
{
    color = Colors.Blue;
}
else if (value == "Green")
{
    color = Colors.Green;
}
else
{
    color = Colors.Red;
}

您也可以使用switch语句而不是if-else链:

switch ((string)value)
{
    case "Blue":
        color = Colors.Blue;
        break;
    case "Green":
        color = Colors.Green;
        break;
    default:
        color = Colors.Red;
        break;
}

如果只使用标准颜色名称,甚至更简单:

return (Color)ColorConverter.ConvertFromString((string)value);