{"id":55000108,"date":"2017-12-01T00:00:00","date_gmt":"2020-03-27T19:29:10","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=108"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Grid_im_Griff","status":"publish","type":"post","link":"https:\/\/vbentwickler.de\/Grid_im_Griff\/","title":{"rendered":"Grid im Griff"},"content":{"rendered":"<p><b>Das Grid-Element ist ein flexibles Steuer-element zum Platzieren der enthaltenen Steuer-elemente. Seine Definition erfolgt entweder &uuml;ber XAML oder &uuml;ber den Entwurf der jeweiligen .xaml-Seite. Wie Sie das Grid-Element zur Anordnung von Steuerelementen mit XAML definieren, haben wir uns zum Teil schon im Artikel Steuer-elemente anordnen angesehen. Im vorliegenden Artikel zeigen wir nun, wie Sie das Grid schnell mit der Maus so definieren, wie Sie es sonst per XAML tun &#8211; und sich damit eine Menge Zeit und M&uuml;he sparen k&ouml;nnen.<\/b><\/p>\n<h2>Standardaufgaben vereinfachen<\/h2>\n<p>Wenn Sie Steuer-elemente auf einem WPF-Fenster anordnen wollen, k&ouml;nnen Sie diese nat&uuml;rlich einfach so aus der Toolbox auf das Fenster ziehen und mit den absoluten Werten arbeiten, die dann automatisch f&uuml;r Position und Gr&ouml;&szlig;e der Steuer-elemente angelegt werden. Sie k&ouml;nnen diese allerdings auch in Elementen wie dem <b>Grid<\/b>, dem <b>StackPanel<\/b>, dem <b>WrapPanel<\/b>, dem <b>DockPanel<\/b> oder anderen Elementen platzieren. Wenn Sie die Steuer-elemente alle direkt auf der Seite platzieren, wird es kompliziert, wenn es um verschiedene Bildschirmaufl&ouml;sungen oder in der Gr&ouml;&szlig;e variable Fenster geht. Mit dem <b>Grid<\/b>-Element geht das alles viel besser: Sie k&ouml;nnen dann die Elemente in das Grid einf&uuml;gen und durch Einstellen von Eigenschaften daf&uuml;r sorgen, dass sich die Gr&ouml;&szlig;e etwa eines Bezeichnungsfeldes, Textfeldes oder einer Schaltfl&auml;che in Abh&auml;ngigkeit der jeweiligen Zelle im Grid anpasst. Erstmal wollen wir uns jedoch anschauen, wie dem Grid Zeilen und Spalten mit der Maus hinzuf&uuml;gen, also durch direkte Manipulation der XAML-Entwurfsansicht.<\/p>\n<h2>Grid-Element<\/h2>\n<p>Das <b>Grid<\/b>-Element ist ja bei jedem neu angelegten <b>Window<\/b>&#8211; oder <b>Page<\/b>-Element automatisch vorhanden und wird im XAML-Code wie folgt definiert:<\/p>\n<pre>&lt;Grid&gt;&lt;\/Grid&gt;<\/pre>\n<p>Im Entwurf f&auml;llt es auch deshalb kaum auf, weil seine Gr&ouml;&szlig;e genau mit der des Fensters &uuml;bereinstimmt. Allein wenn Sie es im Code markieren, wird es durch die Verankerungen sichtbar (siehe Bild 1).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_06\/pic_108_002.png\" alt=\"Einfaches Grid, standardm&auml;&szlig;ig an allen Seiten verankert\" width=\"424,7115\" height=\"259,3372\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Einfaches Grid, standardm&auml;&szlig;ig an allen Seiten verankert<\/span><\/b><\/p>\n<p>Sollten Sie ein Grid einmal versehentlich aus dem &uuml;bergeordneten Element l&ouml;schen, k&ouml;nnen Sie es einfach aus der Toolbox in das Zielelement ziehen &#8211; dann wird im Code es allerdings mit absoluten Eigenschaften versehen, etwa so &#8211; und sieht im Entwurf wie in Bild 2 aus:<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_06\/pic_108_003.png\" alt=\"Ein aus der Toolbox hinzugef&uuml;gtes Grid-Element\" width=\"499,6607\" height=\"289,5029\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Ein aus der Toolbox hinzugef&uuml;gtes Grid-Element<\/span><\/b><\/p>\n<pre>&lt;Grid HorizontalAlignment=\"Left\" Height=\"100\" Margin=\"20,20,0,0\" VerticalAlignment=\"Top\" Width=\"200\"\/&gt;<\/pre>\n<p>Wenn das Grid sich &uuml;ber das komplette Fenster erstrecken soll und bei Gr&ouml;&szlig;en&auml;nderungen ebenfalls angepasst werden soll, ben&ouml;tigen Sie all diese Eigenschaften jedoch nicht. Bevor Sie die unn&ouml;tigen Attribute aus dem Element entfernt haben, haben Sie jedoch schneller ein neues, leeres Element mit der Definition <b><Grid><\/Grid> <\/b>angelegt.<\/p>\n<h2>Anlegen von Spalten<\/h2>\n<p>F&uuml;r eine bessere Sichtbarkeit der nachfolgend vorgenommenen &Auml;nderungen verwenden wir jedoch weiterhin das mitten im Fenster angelegte <b>Grid<\/b>-Element. Um dem <b>Grid<\/b>-Element eine neue Spalte hinzuzuf&uuml;gen, bewegen Sie den Mauszeiger nach dem Markieren des <b>Grid<\/b>-Elements (was am einfachsten durch Setzen der Einf&uuml;gemarke in den Code des <b>Grid<\/b>-Elements gelingt) oben an die gestrichelte Linie, bis eine vertikale Linie wie in Bild 3 erscheint.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_06\/pic_108_001.png\" alt=\"Hinzuf&uuml;gen einer Spalte zum Grid-Element\" width=\"499,6607\" height=\"290,5689\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Hinzuf&uuml;gen einer Spalte zum Grid-Element<\/span><\/b><\/p>\n<p>Bewegen Sie die Maus an die gew&uuml;nschte Stelle und klicken Sie, wenn Sie diese erreicht haben. Die neue Spalte wird dann wie in Bild 4 angelegt. Der XAML-Code wird dadurch merklich erweitert, n&auml;mlich um die Definition der entsprechenden Spalten. Durch das Hinzuf&uuml;gen einer Spalte haben Sie nun zwei Spalten, denn eine Spalte war ja implizit bereits vorher vorhanden. Nun haben wir zwei durch <b>ColumnDefinition<\/b>-Elemente definierte Spalten, f&uuml;r die Visual Studio gleich die entsprechenden Breiten eingetragen hat:<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_06\/pic_108_004.png\" alt=\"Grid-Element mit der neuen Spalte\" width=\"349,7625\" height=\"236,233\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 4: Grid-Element mit der neuen Spalte<\/span><\/b><\/p>\n<pre>&lt;Grid ...&gt;\r\n     &lt;Grid.ColumnDefinitions&gt;\r\n         &lt;ColumnDefinition Width=\"41*\"\/&gt;\r\n         &lt;ColumnDefinition Width=\"159*\"\/&gt;\r\n     &lt;\/Grid.ColumnDefinitions&gt;\r\n&lt;\/Grid&gt;<\/pre>\n<p>Wenn Sie weitere vertikale Linien auf die oben gezeigte Art hinzuf&uuml;gen, werden die Elemente unter <b>Grid.ColumnDefinitions <\/b>entsprechend erweitert. Was bedeutet <b>41* <\/b>und <b>159* <\/b>doch gleich Das ist das Verh&auml;ltnis, in dem die Breiten der Spalten zueinanderstehen. Die Gesamtbreite entspricht hier 200*, also nimmt die linke Spalte 41\/200 und die rechte 159\/200 der Breite de <b>Grid<\/b>-Elements ein. Wenn Sie dies einfach anpassen wollen, bewegen Sie den Mauszeiger oben auf das nach unten zeigende Dreieck zwischen den beiden Spalten und ziehen Sie dieses wie in Bild 5 nach links oder rechts. Halten Sie dabei die <b>Umschalt<\/b>-Taste gedr&uuml;ckt, &auml;ndert sich auch gleich noch die Gr&ouml;&szlig;e des dem Grid &uuml;bergeordneten Elements, hier dem <b>Window<\/b>-Element, mit.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_06\/pic_108_005.png\" alt=\"&Auml;ndern des Spaltenbreiten-Verh&auml;ltnisses\" width=\"349,7625\" height=\"208,1668\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 5: &Auml;ndern des Spaltenbreiten-Verh&auml;ltnisses<\/span><\/b><\/p>\n<p>Neben der hier beschriebenen Syntax mit der Zahl und dem folgenden Sternchen (<b>*<\/b>) wie <b>50*<\/b> gibt es nat&uuml;rlich noch andere Werte, die Sie gelegentlich verwenden wollen &#8211; zum Beispiel das Sternchen ohne f&uuml;hrende Zahl oder der Wert <b>Auto<\/b>. Diese k&ouml;nnen Sie ebenfalls &uuml;ber die Entwurfsansicht manipulieren. Dazu fahren Sie mit der Maus wie oben beschrieben so in den oberen Bereich einer Spalte, als ob Sie eine neue Spalte anlegen wollen. Es erscheint dann eine Art Kombinationsfeld, das nach dem Anklicken der Schaltfl&auml;che am rechten Rand die Optionen wie in Bild 6 anzeigt.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_06\/pic_108_006.png\" alt=\"Spalten-Optionen\" width=\"424,7115\" height=\"355,0153\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 6: Spalten-Optionen<\/span><\/b><\/p>\n<ul>\n<li><b>Star<\/b>: Entspricht der Standardeinstellung.<\/li>\n<li><b>Pixel<\/b>: Tr&auml;gt die aktuelle Breite in Pixeln f&uuml;r die Spaltenbreite ein.<\/li>\n<li><b>Auto<\/b>: Tr&auml;gt den Wert Auto f&uuml;r die Eigenschaft <b>Width <\/b>ein. Wenn keine Steuer-elemente enthalten sind, f&uuml;hrt dies zur Anzeige der Spalte mit der Breite <b>0<\/b>.<\/li>\n<\/ul>\n<p>Die &uuml;brigen Eintr&auml;ge erlauben das Ausw&auml;hlen der gew&auml;hlten Spalte, das Hinzuf&uuml;gen einer Spalte vor oder nach der gew&auml;hlten Spalte oder das L&ouml;schen der aktuellen Spalte. Der Eintrag <b>Spalte verschieben vor <\/b>tauscht die Position der Spalte mit der links davon befindlichen Spalte, der Eintrag <b>Spalte verschieben nach <\/b>tauscht mit der rechts davon liegenden Spalte. <\/p>\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\/55000108\/\">\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\/55000108?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\/55000108\/\"\/>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_login_nonce\" value=\"123b777de9\"\/>\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>Das Grid-Element ist ein flexibles Steuer-element zum Platzieren der enthaltenen Steuer-elemente. Seine Definition erfolgt entweder &uuml;ber XAML oder &uuml;ber den Entwurf der jeweiligen .xaml-Seite. Wie Sie das Grid-Element zur Anordnung von Steuerelementen mit XAML definieren, haben wir uns zum Teil schon im Artikel Steuer-elemente anordnen angesehen. Im vorliegenden Artikel zeigen wir nun, wie Sie das Grid schnell mit der Maus so definieren, wie Sie es sonst per XAML tun &#8211; und sich damit eine Menge Zeit und M&uuml;he sparen k&ouml;nnen.<\/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":[662017,66062017,44000002,44000028,44000015],"tags":[],"yst_prominent_words":[],"class_list":["post-55000108","post","type-post","status-publish","format-standard","hentry","category-662017","category-66062017","category-Benutzeroberflaeche_mit_WPF","category-Word_programmieren","category-WPFSteuerelemente"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000108","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=55000108"}],"version-history":[{"count":0,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000108\/revisions"}],"wp:attachment":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/media?parent=55000108"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/categories?post=55000108"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/tags?post=55000108"},{"taxonomy":"yst_prominent_words","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/yst_prominent_words?post=55000108"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}