[英]Binding Gradient color in wpf
我必须绑定渐变颜色属性。 在此,我正在使用转换器。 这是绑定的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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.