Я пытаюсь отобразить изображение в ListBox.ItemTemplate в зависимости от его значения привязки, значение привязки - это состояние объекта (ожидающий, извлеченный, опубликованный, завершенный или ошибочный), вот XAML для элемента Image .
<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 в своих классах, чтобы интерфейс знал, когда свойство изменяется автоматически, и я сразу понял, что это не проблема:)
Я пробирался через университет Google и видел множество постов с такой же проблемой в принципе, но не нашел решения при использовании интерфейса конвертера и ресурсов проекта.
Кто-нибудь может помочь? Заранее спасибо
Все мои другие классы IValueConverter работают отлично, только не этот.