Von der Datenbank bis zur Oberfläche mit .NET, Teil 5: Desktop- und Browseranwendung mit Silverlight

Seite 8: Listing 4

Inhaltsverzeichnis
using System.ComponentModel;
using System.Collections.ObjectModel;
using WWWings_GO;
using WWWings_SLDienstproxies.WWWingsServer;
using System;

namespace WWWings_SL.Ansichten
{
public partial class NeuerPassagierViewModel : INotifyPropertyChanged
{

/// ################ Befehle ################
public ActionCommand SpeichernCommand { get; set; }
public ActionCommand AbbrechenCommand { get; set; }

/// ################ Ereignisse ################
public event Action<Passagier> NeuerPassagierViewModelExit;

/// ################ Daten (Properties) ################
public Passagier passagier;
public Passagier Passagier // Das neue Passagier-Objekt
{
get { return passagier; }
set { passagier = value; OnPropertyChanged("Passagier"); }
}

public string fehlerMeldung;
public string FehlerMeldung // StatusMeldung nach Speichern
{
get { return fehlerMeldung; }
set { fehlerMeldung = value; OnPropertyChanged("FehlerMeldung"); }
}

/// ################ Konstruktor ################

public NeuerPassagierViewModel()
{
SpeichernCommand = new ActionCommand(Speichern);
AbbrechenCommand = new ActionCommand(Abbrechen);

// Passagier instanziieren
Passagier = new Passagier();

// Nur zum Test
Passagier.Vorname = "Max";
Passagier.Name = "Mustermann";
Passagier.Geburtsdatum = DateTime.Now.Date;
Passagier.PassagierStatus = "A";
}

/// ################ Aktion 1 ################

private void Speichern()
{

// Neuen Passagier speichern
ObservableCollection<Passagier> GeändertePassagiere =
new ObservableCollection<Passagier>() { Passagier };
string Statistik;

BuchungsServiceClient client = new BuchungsServiceClient();
client.SavePassagierSetCompleted +=
new EventHandler<SavePassagierSetCompletedEventArgs>
(client_SavePassagierSetCompleted);
client.SavePassagierSetAsync(GeändertePassagiere);
}

/// ################ Aktion 2 ################


private void client_SavePassagierSetCompleted(object sender,
SavePassagierSetCompletedEventArgs e)
{

if (e.Error == null)
{
var antwort = e.Result;

if (antwort.Count == 1)
{
// Der erste neue Passagier muss der angelegte sein,
// der nun auch die ID enthält!
Passagier = antwort[0];
FehlerMeldung = "";
if (NeuerPassagierViewModelExit != null)
NeuerPassagierViewModelExit(Passagier);
}
}
else
{
FehlerMeldung = e.Error.Message;
if (NeuerPassagierViewModelExit != null)
NeuerPassagierViewModelExit(null);
}
}


void Abbrechen()
{
if (NeuerPassagierViewModelExit != null)
NeuerPassagierViewModelExit(null);
}

/// ################ INotifyPropertyChanged ################

#region INotifyPropertyChanged Members

public event PropertyChangedEventHandler PropertyChanged;


protected virtual void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
#endregion
}
}