我有一个实现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>

09-12 04:44