public ListViewModel() { this.NeuePersonCmd = new UserCommand ( para => { return(true); }, para => { Views.DetailView detailV = new Views.DetailView(); detailV.DataContext = new DetailViewModel(); if (detailV.ShowDialog() == true) { Models.Person.PersonenListe.Add((detailV.DataContext as DetailViewModel).aktuellePerson); } } ); this.ÄnderePersonCmd = new UserCommand ( p => p is Models.Person, p => { Views.DetailView detailV = new Views.DetailView(); detailV.DataContext = new DetailViewModel(); (detailV.DataContext as DetailViewModel).aktuellePerson = new Models.Person(p as Models.Person); if (detailV.ShowDialog() == true) { Models.Person.PersonenListe[Models.Person.PersonenListe.IndexOf(p as Models.Person)] = (detailV.DataContext as DetailViewModel).aktuellePerson; } } ); this.LöschePersonCmd = new UserCommand ( p => p is Models.Person, p => Models.Person.PersonenListe.Remove(p as Models.Person) ); this.SchließeAppCmd = new UserCommand ( p => true, p => Application.Current.Shutdown() ); }
public ListViewModel() { //Command-Definitionen //Löschen einer Person this.LoeschenCmd = new CustomCommand ( //CanExe: s.u. p => p is Model.Person, //Exe: p => { //Anzeige einer MessageBox, ob Löschvorgang wirklich gewollt ist if (MessageBox.Show($"Soll {(p as Model.Person).Vorname} {(p as Model.Person).Nachname} wirklich gelöcht werden?", "Person löschen", MessageBoxButton.YesNo) == MessageBoxResult.Yes) { //Löschen der ausgewählten Person Model.Person.Personenliste.Remove(p as Model.Person); } } ); //Ändern einer bestehenden Person this.AendernCmd = new CustomCommand ( //CanExe: Kann ausgeführt werden, wenn der Parameter (der im DataGrid ausgewählte Eintrag) eine Person ist. //Fungiert als Null-Prüfung p => p is Model.Person, //Exe: p => { //Instanzieren eines neuen DetailViews Views.DetailView neuePersonDialog = new Views.DetailView(); //Zuweisung eines neuen DetailViewModels als dessen DataContext //sowie Zuweisung einer Kopie der ausgewählten Person in die 'AktuellePerson'-Property des neuen DetailViewModels neuePersonDialog.DataContext = new DetailViewModel() { AktuellePerson = new Model.Person(p as Model.Person) }; //Ändern des Titels des neuen DetailViews (neuePersonDialog as Views.DetailView).Title = "Ändere " + (p as Model.Person).Vorname + " " + (p as Model.Person).Nachname; //Aufruf des DetailViews mit Überprüfung auf dessen DialogResult (wird true, wenn der Benutzer OK klickt) if (neuePersonDialog.ShowDialog() == true) { //Austausch der (veränderten) Person-Kopie mit dem Original in der Liste Model.Person.Personenliste[Model.Person.Personenliste.IndexOf(p as Model.Person)] = (neuePersonDialog.DataContext as DetailViewModel).AktuellePerson; } } ); //Hinzufügen einer neuen Person this.NeuCmd = new CustomCommand ( //CanExe: kann immer ausgeführt werden p => true, //Exe: p => { //Instanzieren eines neuen DetailViews Views.DetailView neuePersonDialog = new Views.DetailView(); //Zuweisung eines neuen DetailViewModels als dessen DataContext //sowie Zuweisung einer neuen Person in die 'AktuellePerson'-Property des neuen DetailViewModels neuePersonDialog.DataContext = new DetailViewModel() { AktuellePerson = new Model.Person() }; //Aufruf des DetailViews mit Überprüfung auf dessen DialogResult (wird true, wenn der Benutzer OK klickt) if (neuePersonDialog.ShowDialog() == true) { //Hinzufügen der neuen Person zu Liste Model.Person.Personenliste.Add((neuePersonDialog.DataContext as DetailViewModel).AktuellePerson); } } ); }
public ListViewModel() { //Command-Definitionen //Hinzufügen einer neuen Person NeuCmd = new CustomCommand ( //CanExe: kann immer ausgeführt werden para => true, //Exe: para => { //Instanzieren eines neuen DetailViews Views.DetailView neuePersonDialog = new Views.DetailView(); //Zuweisung eines neuen DetailViewModels als dessen DataContext neuePersonDialog.DataContext = new DetailViewModel(); //Zuweisung einer neuen Person in die 'AktuellePerson'-Property des neuen DetailViewModels (neuePersonDialog.DataContext as DetailViewModel).AktuellePerson = new Model.Person(); //Aufruf des DetailViews mit Überprüfung auf dessen DialogResult (wird true, wenn der Benutzer OK klickt) if (neuePersonDialog.ShowDialog() == true) { //Hinzufügen der neuen Person zu Liste Model.Person.Personenliste.Add((neuePersonDialog.DataContext as DetailViewModel).AktuellePerson); } } ); //Ändern einer bestehenden Person AendernCmd = new CustomCommand ( //CanExe: Kann ausgeführt werden, wenn der Parameter (der im DataGrid ausgewählte Eintrag) eine Person ist. //Fungiert als Null-Prüfung para => para is Model.Person, //Exe: para => { //Vgl. NeuCmd (s.o.) Views.DetailView personDialog = new Views.DetailView(); personDialog.DataContext = new DetailViewModel(); //Zuweisung einer Kopie der ausgewählten Person in die 'AktuellePerson'-Property des neuen DetailViewModels (personDialog.DataContext as DetailViewModel).AktuellePerson = new Model.Person(para as Model.Person); //Ändern des Titels des neuen DetailViews (personDialog as Views.DetailView).Title = "Ändere " + (para as Model.Person).Vorname + " " + (para as Model.Person).Nachname; if (personDialog.ShowDialog() == true) { //Austausch der (veränderten) Person-Kopie mit dem Original in der Liste Model.Person.Personenliste[Model.Person.Personenliste.IndexOf(para as Model.Person)] = (personDialog.DataContext as DetailViewModel).AktuellePerson; } } ); //Löschen einer Person LoeschenCmd = new CustomCommand(CanExeLoeschen, ExeLoeschen); //Schließen des Programms SchliessenCmd = new CustomCommand ( //CanExe: kann immer ausgeführt werden para => true, //Exe: Schließen der Applikation para => Application.Current.Shutdown() ); }