我必须绑定渐变颜色属性。在这我使用转换器。这是绑定的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;
}
以上代码无效。我没有得到理想的颜色。
答案 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);