{"id":88062016,"date":"2024-04-25T15:50:41","date_gmt":"2024-04-25T15:50:41","guid":{"rendered":"http:\/\/access-basics.de\/index.php\/88062016.html"},"modified":"2024-04-25T15:50:41","modified_gmt":"2024-04-25T15:50:41","slug":"88062016","status":"publish","type":"page","link":"https:\/\/vbentwickler.de\/88062016\/","title":{"rendered":"Visual Basic Entwickler 06\/2016"},"content":{"rendered":"<h3>WPF-Steuerelemente: Das DockPanel<\/h3>\n<p>Das DockPanel-Element ist eines der Steuerelemente, mit dem sich untergeordnete Steuerelemente ausrichten lassen. Das interessante an diesem Steuerelement ist, dass die enthaltenen Elemente jeweils an der angegebenen Seite des DockPanels angedockt werden. Damit lassen sich interessante Anordnungen erzielen. Welche das sind und wie Sie diese realisieren, erfahren Sie in diesem Artikel.<\/p>\n<p><a href=\"http:\/\/www.vbentwickler.de\/WPFSteuerelemente_Das_DockPanel\">Zum Artikel &#8230;<\/a><\/p>\n<h3>WPF-Trigger<\/h3>\n<p>Trigger kennt der geneigte Access-Anwender h\u00f6chstens vom SQL Server, wo diese die M\u00f6glichkeit boten, auf \u00c4nderungen in den Tabellen zu reagieren, f\u00fcr die sie angelegt wurden. Ein Konstrukt namens Trigger gibt es aber auch unter WPF. Dort sind Trigger nicht an Tabellen gebundene Algorithmen, sondern Definitionen von Aktionen, die in Zusammenhang mit Daten\u00e4nderungen ausgel\u00f6st werden. Dieser Artikel stellt Trigger und ihre Anwendungsm\u00f6glichkeiten vor.<\/p>\n<p><a href=\"http:\/\/www.vbentwickler.de\/WPFTrigger\">Zum Artikel &#8230;<\/a><\/p>\n<h3>Abh\u00e4ngige Eigenschaften per Binding<\/h3>\n<p>Im Artikel Trigger haben Sie erfahren, dass Sie Eigenschaften von Elementen abh\u00e4ngig von der \u00c4nderung anderer Eigenschaften ebenfalls \u00e4ndern k\u00f6nnen. Dies gelingt, mitunter \u00fcber kleine Umwege, auch mithilfe von Bindungen zwischen den Steuerelementen. So k\u00f6nnen Sie beispielsweise ganz einfach definieren, dass eine Eigenschaft den Wert True erh\u00e4lt, wenn eine Eigenschaft eines anderen Elements auch diese Eigenschaft annimmt. Soll hingegen der Wert False \u00fcbernommen werden, wenn die andere Eigenschaft True lautet, wird es kompliziert \u2013 dann kommt ein Converter ins Spiel. Dieser Artikel zeigt die M\u00f6glichkeiten f\u00fcr den Ersatz von Triggern durch Binding auf.<\/p>\n<p><a href=\"http:\/\/www.vbentwickler.de\/Abhaengige_Eigenschaften_per_Binding\">Zum Artikel &#8230;<\/a><\/p>\n<h3>Basics: PropertyChanged<\/h3>\n<p>Unter Access\/VBA haben Sie Tabellen direkt an Formulare und Steuerelemente gebunden, \u00c4nderungen an den Daten wurden regelm\u00e4\u00dfig auch im Frontend aktualisiert. Unter C#\/WPF sieht das ganz anders aus: Hier landen die Daten aus der Tabelle erstmal in Objekten und deren Eigenschaften werden mit Steuerelementen wie TextBox, ComboBox und so weiter angezeigt. Damit sich eine \u00c4nderungen am zugrunde liegenden Objekte auch in der Benutzeroberfl\u00e4che manifestiert, sind ein paar zus\u00e4tzliche Handgriffe n\u00f6tig.<\/p>\n<p><a href=\"http:\/\/www.vbentwickler.de\/Basics_PropertyChanged\">Zum Artikel &#8230;<\/a><\/p>\n<h3>Events in der Praxis<\/h3>\n<p>Im Artikel \u00bbVon VBA zu C#: Objekt-Ereignisse\u00ab haben wir bereits die Grundlagen zur Programmierung und Implementierung benutzerdefinierter Ereignisse gelegt. Dies wollen wir nun ausbauen, indem wir uns zwei praktische Beispiele ansehen. Dabei wollen wir von einem Hauptfenster aus verschiedene Ansichten in einem Frame anzeigen, darunter eine Kunden\u00fcbersicht und eine Kundendetailansicht. Beim Anzeigen sollen verschiedene Dinge geschehen, die wir \u00fcber die Implementierung von Ereignissen l\u00f6sen wollen \u2013 und zwar \u00fcber eingebaute sowie \u00fcber benutzerdefinierte Ereignisse.<\/p>\n<p><a href=\"http:\/\/www.vbentwickler.de\/Events_in_der_Praxis\">Zum Artikel &#8230;<\/a><\/p>\n<h3>EDM: Ausnahmen beim Speichern behandeln<\/h3>\n<p>Die Validierung bei der Eingabe von Daten ist eines der wichtigsten Themen bei der Erstellung benutzerfreundlicher Anwendungen. In diesem ersten Artikel zu diesem Thema wollen wir uns darauf beschr\u00e4nken, solche Eingabefehler abzufangen, welche durch die Restriktionen im Datenmodell und entsprechende Fehleingaben entstehen. Das sind beispielsweise Fehler, die auftreten, weil der Benutzer keinen Wert in ein Feld eingibt, dass nicht leer sein darf oder der Datentyp des Feldes nicht mit dem eingegebenen Wert korrespondiert.<\/p>\n<p><a href=\"http:\/\/www.vbentwickler.de\/EDM_Ausnahmen_beim_Speichern_behandeln\">Zum Artikel &#8230;<\/a><\/p>\n<h3>EDM: Validieren von Entit\u00e4ten mit IDataErrorInfo<\/h3>\n<p>Die Validierung bei der Eingabe von Daten ist eines der wichtigsten Themen bei der Erstellung benutzerfreundlicher Anwendungen. Nachdem der Artikel \u00bbEDM: Ausnahmen beim Speichern behandeln\u00ab gezeigt hat, wozu Sie im Rahmen der Validierung die durch Restriktionen im Datenmodell auftretenden Exceptions nutzen k\u00f6nnen, schauen wir uns nun einen einfachen Weg an, um Validierungsregeln in Entit\u00e4tsklassen zu definieren und beim Fehlschlagen der Validierung entsprechende Meldungen in der Benutzeroberfl\u00e4che auszugeben. Dabei zeigen wir hier den Umgang mit der Schnittstelle \u00bbIDataErrorInfo\u00ab.<\/p>\n<p><a href=\"http:\/\/www.vbentwickler.de\/EDM_Validieren_von_Entitaeten_mit_IDataErrorInfo\">Zum Artikel &#8230;<\/a><\/p>\n<h3>EDM: Kunden verwalten mit Ribbon<\/h3>\n<p>Bisher haben wir in diesem Magazin nur einzelne Beispiele zur Darstellung von Daten aus Tabellen geliefert. Diesmal wollen wir einen Schritt weitergehen: Wir erstellen eine WPF-Anwendung, die ein eigenes Ribbon enth\u00e4lt und mit diesem die Steuerung einiger Funktionen zur Auflistung von Kunden sowie zum Bearbeiten, Hinzuf\u00fcgen und L\u00f6schen von Kundendatens\u00e4tzen erm\u00f6glicht. Dabei nutzen wir als Container f\u00fcr die angezeigten Seiten mit der Kundenliste und den Kundendetails ein Frame-Objekt. Damit k\u00f6nnen wir, wenn mehrere Benutzer ge\u00f6ffnet sind, sogar durch die entsprechenden Seiten navigieren.<\/p>\n<p><a href=\"http:\/\/www.vbentwickler.de\/EDM_Kunden_verwalten_mit_Ribbon\">Zum Artikel &#8230;<\/a><\/p>\n<h3>EDM: Kundendetails verwalten<\/h3>\n<p>In unserer L\u00f6sung zur Verwaltung von Bestellungen spielt die Kundenverwaltung nat\u00fcrlich eine gro\u00dfe Rolle. In diesem Artikel wollen wir uns ansehen, wie wir einen neuen Kunden anlegen oder einen vorhandenen Kunden bearbeiten k\u00f6nnen \u2013 eingebettet nat\u00fcrlich in unser Hauptfenster, dass wir im Artikel \u00bbKunden verwalten\u00ab beleuchten. Daher ben\u00f6tigen wir auch kein eigenes Fenster, um die Kundendetails anzuzeigen, sondern erstellen ein Page-Objekt mit den relevanten Informationen. Dieses nutzen wir dann sowohl zum Anlegen neuer Kunden als auch zum Bearbeiten vorhandener Kunden.<\/p>\n<p><a href=\"http:\/\/www.vbentwickler.de\/EDM_Kundendetails_verwalten\">Zum Artikel &#8230;<\/a><\/p>\n<h3>PropertyChanged in der Praxis<\/h3>\n<p>Der Artikel \u00bbBasics: PropertyChanged\u00ab zeigt, wie die Schnittstelle INotifyPropertyChanged funktioniert. In unserer Beispielanwendung Bestellverwaltung verwenden wir diese Schnittstelle an einer Stelle, wo wir einen Ribbon-Button in Abh\u00e4ngigkeit vom Wert einer Eigenschaft aktivieren und deaktivieren, die das PropertyChanged-Ereignis ausl\u00f6st. Im vorliegenden Artikel zeigen wir, wie dies im Detail funktioniert.<\/p>\n<p><a href=\"http:\/\/www.vbentwickler.de\/PropertyChanged_in_der_Praxis\">Zum Artikel &#8230;<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>WPF-Steuerelemente: Das DockPanel Das DockPanel-Element ist eines der Steuerelemente, mit dem sich untergeordnete Steuerelemente ausrichten lassen. Das interessante an diesem Steuerelement ist, dass die enthaltenen Elemente jeweils an der angegebenen Seite des DockPanels angedockt werden.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","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":""},"yst_prominent_words":[],"class_list":["post-88062016","page","type-page","status-publish","hentry"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/pages\/88062016","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/comments?post=88062016"}],"version-history":[{"count":0,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/pages\/88062016\/revisions"}],"wp:attachment":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/media?parent=88062016"}],"wp:term":[{"taxonomy":"yst_prominent_words","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/yst_prominent_words?post=88062016"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}