C# 转换器不能应用于需要System.Windows.Data.IValueConverter类型的属性
我的WPF应用程序有一个问题,我不太明白。我试图根据某个属性的值将填充绑定到不同的颜色 以下是所涉及的片段:C# 转换器不能应用于需要System.Windows.Data.IValueConverter类型的属性,c#,wpf,data-binding,infragistics,C#,Wpf,Data Binding,Infragistics,我的WPF应用程序有一个问题,我不太明白。我试图根据某个属性的值将填充绑定到不同的颜色 以下是所涉及的片段: public class GeoLocations { private static ObservableCollection<Bus> _locations = new ObservableCollection<Bus>(); public static ObservableCollection<Bus> locations
public class GeoLocations
{
private static ObservableCollection<Bus> _locations = new ObservableCollection<Bus>();
public static ObservableCollection<Bus> locations
{
get { return _locations; }
set
{
_locations = value;
}
}
.
.
.
}
public class Bus : INotifyPropertyChanged
{
private double _VSAI;
public double VSAI
{
get
{
return _VSAI;
}
set
{
_VSAI = value;
OnPropertyChanged(new PropertyChangedEventArgs("VSAI"));
}
}
public class VsaiToColorConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
double vsai = (double)value;
if (vsai < App.Settings.medVSAI)
return Brushes.Green;
if (vsai >= App.Settings.medVSAI && vsai <= App.Settings.maxVSAI)
return Brushes.Yellow;
if (vsai > App.Settings.maxVSAI)
return Brushes.Red;
return Brushes.Transparent;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
公共类地理位置
{
私有静态ObservableCollection_locations=新ObservableCollection();
公共静态可观测采集位置
{
获取{return\u locations;}
设置
{
_地点=价值;
}
}
.
.
.
}
公共类总线:InotifyProperty已更改
{
私人双保险;
公共双VSAI
{
得到
{
返回VSAI;
}
设置
{
_VSAI=数值;
OnPropertyChanged(新PropertyChangedEventArgs(“VSAI”);
}
}
公共类VsaiToColorConverter
{
公共对象转换(对象值、类型targetType、对象参数、System.Globalization.CultureInfo区域性)
{
双vsai=(双)值;
如果(vsai=App.Settings.medVSAI&&vsai App.Settings.maxVSAI)
返回刷。红色;
返回刷。透明;
}
公共对象转换回(对象值、类型targetType、对象参数、System.Globalization.CultureInfo区域性)
{
抛出新的NotImplementedException();
}
}
在我的xaml中,我有以下内容:
在我的资源中,我有
<local:GeoLocations x:Key="geolocs"/>
然后我有一张地图
<ig:GeographicProportionalSymbolSeries x:Name="ProportionalSeries"
LongitudeMemberPath="Longitude"
LatitudeMemberPath="Latitude"
ItemsSource="{Binding Source={StaticResource geolocs}, Path=locations}"
>
<!-- custom marker template for GeographicProportionalSymbolSeries -->
<ig:GeographicProportionalSymbolSeries.MarkerTemplate>
<DataTemplate>
<Ellipse x:Name="RootElement" Width="10" Height="10"
Stroke="DarkGray"
Opacity=".8"
StrokeThickness="0.5"
Fill="{Binding Path=Item.VSAI, Converter={StaticResource VSAIConverter}}">
</Ellipse>
</DataTemplate>
</ig:GeographicProportionalSymbolSeries.MarkerTemplate>
但是我得到的错误是在上面的FILL=…上。我希望这是一个简单的修复方法。我只是有点太新了,不知道如何修复这个错误以及这个错误的含义。你的转换器需要实现接口。你已经实现了这两种方法,但是你忽略了
IValueConverter
接口,直到CL就R而言,您只是拥有一个类,该类恰好具有与IValueConverter
相同的方法,但实际上并没有实现它
public class VsaiToColorConverter : IValueConverter
您通常也希望处理nullvalue
情况
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if(value == null) return Brushes.Transparent; //or null
double vsai = (double)value;
//..
}
我不知道我怎么看不到。请杀了我。这很有魅力。