Изображения исчезают из ListView в WPF после действия

Изображения правильно загружаются в список, но всякий раз, когда я нажимаю на список и меняю SelectedItem, изображения исчезают. Я могу видеть элементы и делать с ними все, но они представляют собой простой ряд, а самого изображения в ряду нет. Это XAML для ListView

<ListView Name="testLB" ItemsSource="{Binding Images}" SelectedItem="{Binding SelectedImage}" HorizontalAlignment="Left" Height="393" Margin="627,28,0,0" VerticalAlignment="Top" Width="244" SelectionChanged="testLB_SelectionChanged"/>

И это часть моей ViewModel.

public ObservableCollection<Image> Images { get; private set; }
    public Image SelectedImage { get => selectedImage;
        set {
            this.selectedImage = value;
            this.OnPropertyChanged("SelectedImage");
        } }

    private Image selectedImage;

person Petar Stojanovski    schedule 10.10.2017    source источник
comment
почему у вас есть элементы пользовательского интерфейса Image в вашей модели представления? вы не предоставили полный и поддающийся проверке пример, но я думаю, что неправильное использование изображения является большой частью проблемы.   -  person ASh    schedule 10.10.2017


Ответы (1)


Image является подклассом UIElement и, следовательно, не должен использоваться в качестве типа элемента в модели представления.

Вместо этого используйте ImageSource (и добавьте, например, BitmapImages или BitmapFrames в свою коллекцию):

public ObservableCollection<ImageSource> Images { get; private set; }

public ImageSource SelectedImage { ... }

Затем сделайте так, чтобы ItemTemplate вашего ListView содержал элемент изображения:

<ListView ItemsSource="{Binding Images}" SelectedItem="{Binding SelectedImage}" ...>
    <ListView.ItemTemplate>
        <DataTemplate>
            <Image Source="{Binding}"/>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>
person Clemens    schedule 10.10.2017
comment
Благодарю вас! Никогда бы не подумал, что это может вызвать такую ​​​​проблему. Теперь работает безотказно. - person Petar Stojanovski; 11.10.2017