Как удалить выбранный элемент из списка с помощью MVVM.
У меня есть приложение для телефонной книги, которое добавляет и сохраняет ввод пользователей в текстовый файл, я пытаюсь иметь функцию, которая позволяет пользователю выбирать сведения о пользователях из списка, а затем удалять их. Кроме того, когда вы нажимаете на пользователей, должен появиться экран с информацией о пользователях, который позволит вам редактировать и сохранять их снова в текстовый файл.
Я попробовал DeletedSelectedItemListBox, который я создал ниже,чтобы иметь возможность удалить выбранный элемент из моего списка.
Что я уже пробовал:
using GalaSoft.MvvmLight; using GalaSoft.MvvmLight.Command; using PhoneBook.View; using System.Collections.Generic; using System.Data; using System.IO; using System.Linq; namespace PhoneBook.ViewModel { class MainWindowViewModel : ViewModelBase { #region Constructor public MainWindowViewModel() { ReadTextFile(); } #endregion #region Properties public const string MyListPropertyName = "ListBox"; private List<string> _listBox = null; public List<string> ListBox { get { return _listBox = _listBox ?? new List<string>(); } set { if (_listBox == value) { return; } RaisePropertyChanged(MyListPropertyName); _listBox = value; RaisePropertyChanged(MyListPropertyName); } } private string _selectedItem = null; public string SelectedItem { get { return _selectedItem; } set { if (_selectedItem != null) { return; } _selectedItem = value; RaisePropertyChanged(); } } #endregion #region Method private void PopUpWindSelectedItem() { } private void DeleteSelectedItemListBox() { string FileName = (@"C: \Users\StanleyM\Desktop\PhoneBook\PhoneBook\bin\Debug\Personal.text"); StreamReader streamReader = new StreamReader(FileName); string line = ""; int Counter = -1; while ((line = streamReader.ReadLine()) != null) { foreach (var item in line) { if (item.ToString() == SelectedItem.ToString()) { Counter--; ListBox.Remove(line); } } } } public void ReadTextFile() { string FileName = (@"C: \Users\StanleyM\Desktop\PhoneBook\PhoneBook\bin\Debug\Personal.text"); DataTable dt = new DataTable("Client"); StreamReader streamReader = new StreamReader(FileName); string line = ""; int Counter = 0; while ((line = streamReader.ReadLine()) != null) { Counter++; ListBox.Add(item: line); } } private void PopUpWindow() { AddEditView PopUp = new AddEditView(); PopUp.ShowDialog(); } #endregion #region RelayCommand private RelayCommand _addCommand = null; public RelayCommand AddCommand { get { return _addCommand = _addCommand ?? new RelayCommand(() => PopUpWindow()); } } private RelayCommand _deleteCommand = null; public RelayCommand DeleteCommand { get { return _deleteCommand = _deleteCommand ?? new RelayCommand(() => DeleteSelectedItemListBox()); } } #endregion } }