我有一个实现IValueConverter
但不能绑定到属性的转换器。
public class StatusToBrushConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return Brushes.Red;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}
在XAML中,我将转换器添加为资源,并将Binding添加到Element
<UserControl.Resources>
<Converters:StatusToBrushConverter x:Key="StatusConverter"/>
</UserControl.Resources>
<Rectangle Fill="{Binding Status, Converter={StaticResource StatusConverter}, ElementName=userControl}"/>
但我不断得到错误
类型为“ StatusToBrushConverter”的对象不能应用于期望类型为“ System.Windows.Data.IValueConverter”的属性
但是Converter实现了接口
IValueConverter
。我尝试了几件事:重建,清理,构建,构建解决方案等。
全新的Converter->相同
先前编写的转换器可以工作。有什么想法吗?
最佳答案
通过使用其完全限定的名称来确保您的StatusToBrushConverter
类确实实现了正确的IValueConverter
接口:
public class StatusToBrushConverter : System.Windows.Data.IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return Brushes.Red;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
您也可以尝试临时使用property元素语法进行调试:
<Rectangle>
<Rectangle.Fill>
<Binding Path="Status" ElementName="userControl">
<Binding.Converter>
<local:StatusToBrushConverter />
</Binding.Converter>
</Binding>
</Rectangle.Fill>
</Rectangle>