我正在尝试根据其绑定值在 ListBox.ItemTemplate 中显示图像,绑定值是对象的状态(待处理、已检索、已发布、完成或错误),这是 Image 元素的 XAML。
<Window.Resources>
<local:StatusImageConverter x:Key="StatusImage" />
</Window.Resources>
<Image Source="{Binding Path=Status, Converter={StaticResource StatusImage}}" />
我在项目资源中添加了 2 个图像(Badge_tick、Badge_cross)并使用 IValueConverter 接口将状态转换为将显示在模板中的图像,这里是 Converter 类
[ValueConversion(typeof(PreTripItem.PreTripItemStatus), typeof(Bitmap))]
public class StatusImageConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
PreTripItem.PreTripItemStatus status = (PreTripItem.PreTripItemStatus)value;
switch (status)
{
case PreTripItem.PreTripItemStatus.Complete:
return new Bitmap(Properties.Resources.Badge_tick);
case PreTripItem.PreTripItemStatus.Error:
return new Bitmap(Properties.Resources.Badge_cross);
default:
return null;
}
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException(); //Does not need to be converted back
}
}
这可以很好地构建/编译并运行,但是当状态更改时,TemplateItem 中不会显示图像。我在我的类中使用 INotifyPropertyChanged 接口,所以接口知道属性何时自动更改,所以我马上知道这不是问题:)
我浏览了谷歌大学,看到很多原则上存在相同问题的帖子,但在使用转换器界面和项目资源时没有找到解决方案。
任何人都可以帮忙吗?提前致谢
我所有的其他 IValueConverter 类都运行良好,只是不是这个。