【发布时间】:2019-08-30 20:20:45
【问题描述】:
我有一个转换器,它实现了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 中,我将转换器作为资源添加并添加到元素的绑定
<UserControl.Resources>
<Converters:StatusToBrushConverter x:Key="StatusConverter"/>
</UserControl.Resources>
<Rectangle Fill="{Binding Status, Converter={StaticResource StatusConverter}, ElementName=userControl}"/>
但我经常收到错误
“StatusToBrushConverter”类型的对象不能应用于需要“System.Windows.Data.IValueConverter”类型的属性
但是转换器实现了接口IValueConverter。我尝试了几件事:
- 重建、清理、构建、构建解决方案等
- 全新的转换器 --> 相同
以前编写的转换器可以工作。想法?
【问题讨论】:
-
您的问题中的“xx”是什么?这有点重要...
-
@canton7 可能是
StatusToBrushConverter -
@Danis 可能是这样,但这没有意义,因为
StatusToBrushConverter实现了IValueConverter,正如问题所指出的那样。如果是其他原因,那就是调查的起点。 -
如果您忘记在转换器定义中添加
: IValueConverter,通常会出现该消息。 -
另外,确保
StatusToBrushConverter声明中的IValueConverter接口实际上是System.Windows.Data.IValueConverter,而不是您意外创建的另一个空接口(如果您使用@987654332,很容易做到@ 为未知类型自动添加using语句,并意外选择创建新接口)。右键单击IValueConverter和“转到定义”
标签: c# wpf xaml binding converters