在 wpf 中绑定渐变颜色

本文关键字:渐变 变颜色 绑定 wpf | 更新日期: 2023-09-27 17:55:59

我必须绑定渐变颜色属性。在这方面,我使用的是转换器。这是用于绑定的 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;
    }

上面的代码不起作用。我没有得到想要的颜色。

在 wpf 中绑定渐变颜色

你的代码甚至不能编译。

在 Convert 方法中,声明类型为 Brush 的局部变量brw,并尝试创建新的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);