У меня есть эта ObservableCollection в моей ViewModel:
private ObservableCollection<Component> _standardComponents;
public ObservableCollection<Component> StandardComponents
{
get { return _standardComponents; }
set { SetProperty(ref _standardComponents, value); }
}
Одно из его свойств
public bool ExistInDatabase { get; set; }
изменяется в зависимости от действий пользователя.
Я отображаю это свойствов моем ListView, используя IValueConverter, как это:
[ValueConversion(typeof(bool), typeof(BitmapImage))]
public class BoolToBitmapImageConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var bitmapImage = ((bool)value == true) ? "Images/Green Ball.png" : "Images/Red Ball.png";
return new BitmapImage(new Uri($"/Proxos.Core;Component/{bitmapImage}", UriKind.Relative));
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return null;
}
}
И в моем View я использую этот шаблон в качестве динамического ресурса:
<GridViewColumn.CellTemplate>
<DataTemplate>
<Image Source="{Binding ExistInDatabase, UpdateSourceTrigger=PropertyChanged, Converter={StaticResource BoolToBitmapImageConverter}}" Height="17" Width="17"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
Чтобы отобразить преобразованное свойство ExistInDatabase в моем ListView:
<ListView Grid.ColumnSpan="7" Grid.RowSpan="10" x:Name="_componentListView" Margin="10" ItemsSource="{Binding StandardComponents, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" View="{DynamicResource componentsList}" SelectedIndex="{Binding ComponentSelectedIndex}" >
Работает нормально, когда я впервые загружаю UserControll, но когда я обновляю свойство ExistInDatabase, IValueConverter не запускается.
Это мой ListView: ListView