Страницы

Поиск по вопросам

среда, 12 июня 2019 г.

MVVM WPF удаление нескольких выбранных элементов

Есть ListBoxсо списком автомобилей

Есть коллекция, в которой находятся данные из БД ObservableCollection Auto;
как сделать удаление нескольких выделенных в ListBox автомобилей? для удаления 1 авто использую следующий код
public RelayCommand DeleteCommand { get {
return deleteCommand ?? (deleteCommand = new RelayCommand((selectedItem) => { MessageBoxResult result = MessageBox.Show("Вы действительно желаете удалить элемент?", "Удаление", MessageBoxButton.YesNo, MessageBoxImage.Question); if (selectedAuto == null || result == MessageBoxResult.No) return; // получаем выделенный объект Auto auto = selectedAuto as Auto; db.Autos.Remove(auto); db.SaveChanges(); OnPropertyChanged("HasAuto"); }, CanEditOrDeleteAuto)); } }
Класс Auto выглядит следующим образом(таблица БД выглядит также)
class Auto : INotifyPropertyChanged { private string model; private string marka; private int cost; private int maxSpeed;
public int Id { get; set; }
public string Model { get { return model; }
set { model = value; OnPropertyChanged("Model"); } }
public string Marka { get { return marka; }
set { marka = value; OnPropertyChanged("Marka"); } }
public int Cost { get { return cost; }
set { cost = value; OnPropertyChanged("Cost"); } }
public int MaxSpeed { get { return maxSpeed; }
set { maxSpeed = value; OnPropertyChanged("MaxSpeed"); } }
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged([CallerMemberName]string prop = "") { if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs(prop)); } }
БД получаю таким образом
public class ApplicationContext : DbContext { public ApplicationContext() : base("DefaultConnection") { } public DbSet Autos { get; set; } }
ViewModel
ObservableCollection autos; private Auto selectedAuto; public ObservableCollection Autos { get { return autos; } set { autos = value; OnPropertyChanged("Autos"); } }
public Auto SelectedAuto { get { return selectedAuto; }
set { selectedAuto = value; OnPropertyChanged("SelectedAuto"); } } public ApplicationViewModel() { db = new ApplicationContext(); db.Autos.Load(); Autos = db.Autos.Local; }
UDP2 разметка