Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
DataContext in ein neues Fenster übergeben und einer Liste hinzufügen
Kriz
myCSharp.de - Member



Dabei seit:
Beiträge: 115

Themenstarter:

DataContext in ein neues Fenster übergeben und einer Liste hinzufügen

beantworten | zitieren | melden

Guten Morgen...

ich bin noch recht neu im Thema WPF und habe daher eine Frage...

Ich habe ein WPF Fenster, wessen Datacontext die Klasse Person hat. In diesem Fenster habe ich mehrere Textboxen welche mittels Binding an die verschiedenen Werte der Klasse Peron gebunden sind. Wenn ich nun dieses WPF Fenster erstelle mit einer vorhandenen Person werden die Werte (Name, Vorname, was auch immer) angezeigt. Wenn ich das Fenster mit einer New Person anzeige sind die Textfelder logischerwese leer. Wenn ich nun auf einen Button clicke, dann möchte ich, dass ein neues Objekt vom Typ Person, mit den eingetragenen Werten in den Textboxen, erstellt wird und einer List<Person> hinzugefügt wird.
Im Moment löse ich das mit

Person NeuePerson = new Person()
{
     Name = txtName.Text,
     Vorname = txtVorname.Text
}
ListePersonen.Add(NeuePerson);

Es funktioniert und erfüllt den Zweck, allerdings sollte es doch möglich sein, das Zuweisen der Werte vom DataContext bzw Binding übernehmen zu lassen...
Also, ist es möglich und wenn ja wie :)

Vielen Dank für Eure Hilfe!!

Kriz
private Nachricht | Beiträge des Benutzers
p!lle
myCSharp.de - Member

Avatar #avatar-3556.jpg


Dabei seit:
Beiträge: 1.040

beantworten | zitieren | melden

Du hast doch eine Instanz einer Person, die du als DataContext gesetzt hast. Diese Person kannst du ganz einfach zur Liste hinzufügen.
private Nachricht | Beiträge des Benutzers
Kriz
myCSharp.de - Member



Dabei seit:
Beiträge: 115

Themenstarter:

beantworten | zitieren | melden

Ich habe ja den DataContext mit einer New Person zugewiesen (also DataContext = New Person()), wenn ich dann versuche meiner Liste den DataContext hinzuzufügen (mit ListePersonen.Add(DataContext) bekomme ich den Fehler dass DataContext ein Objekt ist und nicht in Person konvertiert werden kann...
Wie ist es sonst möglich?
private Nachricht | Beiträge des Benutzers
p!lle
myCSharp.de - Member

Avatar #avatar-3556.jpg


Dabei seit:
Beiträge: 1.040

beantworten | zitieren | melden

Naja, du weißt dann ja, dass der DataContext prinzipiell vom Typ Person ist, also könntest du casten.
[FAQ] Casten aber richtig: () / is / as
Ändert sich der DataContext auf einen anderen Typ, funktioniert die Variante natürlich nicht mehr.

Schöner ist es, wenn du dir die erstellte Person in einem Feld merkst, dann kannst du später damit arbeiten.

private Person _currentPerson;

Konstruktor()
{
    _currentPerson = new Person();
    DataContext = _currentPerson;
}
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von p!lle am .
private Nachricht | Beiträge des Benutzers
FZelle
myCSharp.de - Experte



Dabei seit:
Beiträge: 9.977

beantworten | zitieren | melden

Schöner wäre es erst gar nicht so zu machen sondern gleich MVVM anzuwenden.
private Nachricht | Beiträge des Benutzers
p!lle
myCSharp.de - Member

Avatar #avatar-3556.jpg


Dabei seit:
Beiträge: 1.040

beantworten | zitieren | melden

Zitat von FZelle
Schöner wäre es erst gar nicht so zu machen sondern gleich MVVM anzuwenden.
Passend dazu: [Artikel] MVVM und DataBinding
private Nachricht | Beiträge des Benutzers
Kriz
myCSharp.de - Member



Dabei seit:
Beiträge: 115

Themenstarter:

Erledigt

beantworten | zitieren | melden

p!lle, vielen Dank, den Denkanstoss habe ich gebraucht!

Kriz
private Nachricht | Beiträge des Benutzers