WPF - Удалить выбранный элемент (BitmapImage) из списка

У меня есть Listview и для этого ItemsSource Я поставил CollectionOfCapturedImages (ObservableCollection), а Button для удаления выбранных элементов (BitmapImage) от Listview а также из ObservableCollection и Label в моем MainWindow отображение количества снятых изображений.

private void addNewImageButton_Click(object sender, RoutedEventArgs e)
{
    CameraWindow cWindow = Application.Current.Windows.OfType<CameraWindow>().FirstOrDefault();
    RoutedEventArgs newEventArgs = new RoutedEventArgs(Button.ClickEvent);
    cWindow.manualCapture.RaiseEvent(newEventArgs);
    // ListView.ScrollIntoView(ListView.Items.Count - 1);
}

public ObservableCollection<BitmapImage> CollectionOfCapturedImages { get; } = new ObservableCollection<BitmapImage>();


<ListView x:Name="ListView" ItemsSource="{Binding CollectionOfCapturedImages}" Height="345"  Margin="567,10,10,0" VerticalAlignment="Top">
    <ListView.ItemsPanel>
        <ItemsPanelTemplate>
            <UniformGrid Columns="1" HorizontalAlignment="Center" VerticalAlignment="Top"/>
        </ItemsPanelTemplate>
    </ListView.ItemsPanel>
    <ListView.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Vertical">
                <Image Source="{Binding}" Height="150" Width="150"/>
            </StackPanel>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

вот как я обновляю Label в MainWindow, Когда я снимаю изображения, нет проблем, Labelсодержание обновляется.

 public Action<int> amountOfCapturedImages;

this.cameraWindow = new CameraWindow(this);
 cameraWindow.amountOfCapturedImages += (int count) => {
    MwAmountOfImagesLabel.Content = count;
 };

и вот моя кнопка удаления

<Button x:Name="DeleteSelectedImageButton" Click="DeleteSelectedImageButton_Click" Content="Delete Selected Image" HorizontalAlignment="Left" Margin="567,488,0,0" Height="26" VerticalAlignment="Top" Width="145"/>

и таким образом я удаляю BitmapImageс из Listview

private void DeleteSelectedImageButton_Click(object sender, RoutedEventArgs e)
{
    CollectionOfCapturedImages.Remove((BitmapImage)ListView.SelectedItem);
}

но мой Labelсодержание не обновляется, когда я удаляю изображение из Listview, Как я могу правильно обновить мой Labelсодержание?

2 ответа

Вы должны удалить их из CollectionOfCapturedImages и связать MwAmountOfImagesLabel => CollectionOfCapturedImages.Count

Избавьтесь от этого кода:

cameraWindow.amountOfCapturedImages += (int count) => {
    MwAmountOfImagesLabel.Content = count;
};

... и просто связать Content собственность Label Count собственность ObservableCollection:

<Label Content="{Binding CollectionOfCapturedImages.Count}" />

Вы не должны устанавливать Content собственность Label программно где-то в вашем коде. Просто установите привязку в вашей разметке XAML.

Другие вопросы по тегам