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.