{"id":55000040,"date":"2016-06-01T00:00:00","date_gmt":"2020-03-27T19:20:21","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=40"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"WPFDatenbindung_Einfache_Objekte","status":"publish","type":"post","link":"https:\/\/vbentwickler.de\/WPFDatenbindung_Einfache_Objekte\/","title":{"rendered":"WPF-Datenbindung: Einfache Objekte"},"content":{"rendered":"<p><b>Wenn Sie WPF-Anwendungen erstellen wollen, wollen Sie die Daten der Anwendung in entsprechenden Fenstern darstellen. Ein Weg zu diesem Ziel ist das Bereitstellen der Daten in Form von Objekten auf Basis von Klassen, welche die Eigenschaften des jeweiligen Objekts beschreiben. Dieser Artikel zeigt, welche Schritte n&ouml;tig sind, um ein Objekt auf Basis einer einfachen Klasse zu erstellen und seine Daten in den Steuerelementen eines WPF-Fensters anzuzeigen.<\/b><\/p>\n<h2>WPF-Anwendung erstellen<\/h2>\n<p>Da wir nicht nur ein Objekt erstellen, sondern auch seine Daten in einem WPF-Fenster abbilden m&ouml;chten, ben&ouml;tigen wir ein Projekt auf Basis der Vorlage <b>Visual C#|WPF-Anwendung<\/b>, die wir im Falle des Beispielprojekts <b>WPFDatenbindung <\/b>benannt haben.<\/p>\n<h2>Beispielklasse f&uuml;r einen Kunden erstellen<\/h2>\n<p>Gleich danach erstellen wir die Beispielklasse, welche die Definition f&uuml;r die Kunden-Objekte enth&auml;lt. Diese f&uuml;gen Sie beispielsweise &uuml;ber den Kontextmen&uuml;-Eintrag <b>Hinzuf&uuml;gen|Klasse&#8230; <\/b>des Projektnamens im Projektmappen-Explorer hinzu. Legen Sie den Namen <b>Kunde <\/b>f&uuml;r die Klasse fest.<\/p>\n<p>Die neu erstellte Klasse erg&auml;nzen Sie wie in Listing 1 angegeben. Dort finden Sie drei private Eigenschaften namens <b>vorname<\/b>, <b>nachname <\/b>und <b>geburtsdatum<\/b>. F&uuml;r alle drei haben wir Eigenschaftsmethoden angelegt (<b>Vorname<\/b>, <b>Nachname <\/b>und <b>Geburtsdatum<\/b>), mit denen die Werte f&uuml;r die Variablen an das Objekt &uuml;bergeben und auch ausgelesen werden k&ouml;nnen.<\/p>\n<pre>using System;\r\nnamespace WPFDatenbindung {\r\n     class Kunde {\r\n         private string vorname;\r\n         private string nachname;\r\n         private DateTime geburtsdatum;\r\n         public string Vorname {\r\n             get { return vorname; }\r\n             set { vorname = value; }\r\n         }\r\n         public string Nachname {\r\n             get { return nachname; }\r\n             set { nachname = value; }\r\n         }\r\n         public DateTime Geburtsdatum {\r\n             get { return geburtsdatum; }\r\n             set { geburtsdatum = value; }\r\n         }\r\n     }\r\n}<\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 1: Eine einfache Kunden-Klasse<\/span><\/b><\/p>\n<h2>Kunden-Klasse testen<\/h2>\n<p>Um diese Klasse wie in Bild 1 zu testen, f&uuml;gen wir dem Hauptfenster der Anwendung namens <b>MainWindow <\/b>die Schaltfl&auml;che <b>btnObjektErstellen <\/b>hinzu.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2016_03\/pic_40_001.png\" alt=\"Erstellen eines Objekts und anzeigen seiner Werte\" width=\"500\" height=\"221,5074\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Erstellen eines Objekts und anzeigen seiner Werte<\/span><\/b><\/p>\n<p>F&uuml;r diese legen wir das Attribut <b>Click <\/b>mit dem Wert <b>btnObjekt-Erstellen_Click <\/b>fest und erstellen gleichzeitig die gleichnamige Methode aus Listing 2 (dazu das Attribut <b>Click<\/b> gefolgt von Gleichheitszeichen und Anf&uuml;hrungszeichen f&uuml;r das <b>button<\/b>-Element eingeben und dann einfach mit der Tabulatortaste vervollst&auml;ndigen &#8211; die Methode <b>btnObjektErstellen_Click <\/b>finden Sie dann in der Code behind-Klasse namens <b>MainWindows.xaml.cs<\/b>).<\/p>\n<pre>private void btnObjektErstellen_Click(object sender, RoutedEventArgs e) {\r\n     Kunde kunde = new Kunde();\r\n     kunde.Vorname = \"Andr&eacute;\";\r\n     kunde.Nachname = \"Minhorst\";\r\n     kunde.Geburtsdatum = new DateTime(1971, 1, 23);\r\n     MessageBox.Show(\"Vorname: \" + kunde.Vorname + \"\\nNachname: \" + kunde.Nachname + \"\\nGeburtsdatum: \" \r\n         + kunde.Geburtsdatum.ToShortDateString());\r\n}<\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 2: Testen der Klasse Kunde.cs<\/span><\/b><\/p>\n<p>Dies erstellt ein neues Objekt auf Basis der Klasse <b>Kunde <\/b>und f&uuml;llt die drei Eigenschaften mit den entsprechenden Werten. Dabei &uuml;bergeben wir das Geburtsdatum als neues Objekt des Typs <b>DateTime <\/b>mit dem Jahr, dem Monat und dem Tag als Parameter. Bei der Ausgabe im Meldungsfenster greifen wir &uuml;ber die Eigenschaft <b>ToShortDateString <\/b>auf das reine Datum ohne Angabe der Uhrzeit zu.<\/p>\n<h2>Kunden-Objekt im Fenster anzeigen<\/h2>\n<p>Nun wollen wir ein WPF-Fenster erstellen und zun&auml;chst die Daten eines gef&uuml;llten <b>Kunde<\/b>-Objekts dort abbilden. Dazu erstellen Sie ein neues WPF-Fenster namens <b>EinfachesObjektBinden<\/b>, wodurch auch eine Datei <b>EinfachesObjektBinden.xaml <\/b>plus die Code behind-Datei <b>EinfachesObjektBinden.xaml.cs <\/b>erzeugt werden.<\/p>\n<p>Dem Fenster f&uuml;gen Sie &uuml;ber den XAML-Code ein Grid hinzu, das aus zwei Spalten und vier Zeilen besteht (siehe Listing 3). Die drei <b>Label<\/b>-Steuerelemente weisen Sie &uuml;ber die <b>Grid.Column<\/b>-Eigenschaft der ersten Spalte und &uuml;ber <b>Grid.Row <\/b>den jeweiligen Zeilen zu, Gleiches gilt f&uuml;r die drei <b>TextBox<\/b>-Steuerelemente, die allerdings in der zweiten Spalte landen sollen. Um dieses Fenster zu initialisieren und anzuzeigen, f&uuml;gen Sie dem Hauptfenster der Anwendung eine weitere Schaltfl&auml;che namens <b>btnObjektBinden <\/b>hinzu. Diese soll die folgende einfache Methode ausl&ouml;sen und somit das Fenster <b>Einfaches-ObjektBinden <\/b>anzeigen:<\/p>\n<pre>&lt;Window x:Class=\"WPFDatenbindung.EinfachesObjektBinden\" ... Title=\"EinfachesObjektBinden\" Height=\"200\" Width=\"417\"&gt;\r\n     &lt;Grid&gt;\r\n         &lt;Grid.ColumnDefinitions&gt;\r\n             &lt;ColumnDefinition Width=\"55*\"\/&gt;\r\n             &lt;ColumnDefinition Width=\"91*\"\/&gt;\r\n         &lt;\/Grid.ColumnDefinitions&gt;\r\n         &lt;Grid.RowDefinitions&gt;\r\n             &lt;RowDefinition Height=\"40\"\/&gt;\r\n             &lt;RowDefinition Height=\"40\"\/&gt;\r\n             &lt;RowDefinition Height=\"40\"\/&gt;\r\n             &lt;RowDefinition Height=\"*\"\/&gt;\r\n         &lt;\/Grid.RowDefinitions&gt;\r\n         &lt;Label x:Name=\"lblVorname\" Content=\"Vorname:\" Margin=\"5,5,5,5\" Grid.Column=\"0\" Grid.Row=\"0\"\/&gt;\r\n         &lt;Label x:Name=\"lblNachname\" Content=\"Nachname:\" Margin=\"5,5,5,5\" Grid.Column=\"0\" Grid.Row=\"1\"\/&gt;\r\n         &lt;Label x:Name=\"lblGeburtsdatum\" Content=\"Geburtsdatum:\" Margin=\"5,5,5,5\" Grid.Column=\"0\" Grid.Row=\"2\"\/&gt;\r\n         &lt;TextBox x:Name=\"txtVorname\" Grid.Column=\"1\" Margin=\"5,5,5,5\" Text=\"TextBox\" \/&gt;\r\n         &lt;TextBox x:Name=\"txtNachname\" Grid.Column=\"1\" Grid.Row=\"1\" Margin=\"5,5,5,5\" Text=\"TextBox\" \/&gt;\r\n         &lt;TextBox x:Name=\"txtGeburtsdatum\" Grid.Column=\"1\" Grid.Row=\"2\" Margin=\"5,5,5,5\" Text=\"TextBox\" \/&gt;\r\n     &lt;\/Grid&gt;\r\n&lt;\/Window&gt;<\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 3: Definition des WPF-Fensters zur Anzeige der Kundendaten<\/span><\/b><\/p>\n<pre>private void btnObjektBinden_Click(object sender, \r\n         RoutedEventArgs e) {\r\n     EinfachesObjektBinden wnd = new EinfachesObjektBinden();\r\n     wnd.Show();\r\n}<\/pre>\n<h2>Steuerelemente mit Kundendaten f&uuml;llen<\/h2>\n<div class=\"rcp_restricted\"><p><span style=\"color: #ff0000;\">M&ouml;chten Sie weiterlesen? Dann l&ouml;sen Sie Ihr Ticket!<\/span><br \/>\n<span style=\"color: #ff0000;\">Hier geht es zur Bestellung des Jahresabonnements des Magazins <strong>Visual Basic Entwickler<\/strong>:<\/span><br \/>\n<span style=\"color: #ff0000;\"><a style=\"color: #ff0000;\" href=\"https:\/\/shop.minhorst.com\/magazine\/363\/visual-basic-entwickler-jahresabonnement?c=77\">Zur Bestellung ...<\/a><\/span><br \/>\n<span style=\"color: #ff0000;\">Danach greifen Sie sofort auf <strong>alle rund 200 Artikel<\/strong> unseres Angebots zu - auch auf diesen hier!<\/span><br \/>\n<span style=\"color: #000000;\">Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:<\/span><\/p>\n<\/div>\n\n\t\n\t<form id=\"rcp_login_form\"  class=\"rcp_form\" method=\"POST\" action=\"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000040\/\">\n\n\t\t\n\t\t<fieldset class=\"rcp_login_data\">\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_login\">Username or Email<\/label>\n\t\t\t\t<input name=\"rcp_user_login\" id=\"rcp_user_login\" class=\"required\" type=\"text\"\/>\n\t\t\t<\/p>\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_pass\">Password<\/label>\n\t\t\t\t<input name=\"rcp_user_pass\" id=\"rcp_user_pass\" class=\"required\" type=\"password\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t\t<p>\n\t\t\t\t<input type=\"checkbox\" name=\"rcp_user_remember\" id=\"rcp_user_remember\" value=\"1\"\/>\n\t\t\t\t<label for=\"rcp_user_remember\">Remember me<\/label>\n\t\t\t<\/p>\n\t\t\t<p class=\"rcp_lost_password\"><a href=\"\/data\/wp\/v2\/posts\/55000040?rcp_action=lostpassword\"><\/a><\/p>\n\t\t\t<p>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_action\" value=\"login\"\/>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_redirect\" value=\"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000040\/\"\/>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_login_nonce\" value=\"41a4e68012\"\/>\n\t\t\t\t<input id=\"rcp_login_submit\" class=\"rcp-button\" type=\"submit\" value=\"Login\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t<\/fieldset>\n\n\t\t\n\t<\/form>\n<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wenn Sie WPF-Anwendungen erstellen wollen, wollen Sie die Daten der Anwendung in entsprechenden Fenstern darstellen. Ein Weg zu diesem Ziel ist das Bereitstellen der Daten in Form von Objekten auf Basis von Klassen, welche die Eigenschaften des jeweiligen Objekts beschreiben. Dieser Artikel zeigt, welche Schritte n&ouml;tig sind, um ein Objekt auf Basis einer einfachen Klasse zu erstellen und seine Daten in den Steuerelementen eines WPF-Fensters anzuzeigen.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[662016,66032016,44000008,44000004,44000003],"tags":[],"yst_prominent_words":[],"class_list":["post-55000040","post","type-post","status-publish","format-standard","hentry","category-662016","category-66032016","category-Datenzugriffstechnik","category-Loesungen","category-WPFGrundlagen"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000040","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/comments?post=55000040"}],"version-history":[{"count":0,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000040\/revisions"}],"wp:attachment":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/media?parent=55000040"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/categories?post=55000040"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/tags?post=55000040"},{"taxonomy":"yst_prominent_words","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/yst_prominent_words?post=55000040"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}