在 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;
}
上面的代码不起作用。我没有得到想要的颜色。
你的代码甚至不能编译。
在 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);