{"id":55000085,"date":"2017-06-01T00:00:00","date_gmt":"2020-03-27T19:26:14","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=85"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Das_ListBoxSteuerelement_Grundlagen","status":"publish","type":"post","link":"https:\/\/vbentwickler.de\/Das_ListBoxSteuerelement_Grundlagen\/","title":{"rendered":"Das ListBox-Steuerelement: Grundlagen"},"content":{"rendered":"<p><b>Wer unter Access\/VBA gern das Listenfeld als Steuerelement genutzt hat, wird unter WPF ein &auml;hnliches Steuerelement verwenden wollen. Ein einfach aufgebautes Steuerelement zur Anzeige von Texten in Listenform ist das ListBox-Steuerelement. Es l&auml;sst sich sehr leicht definieren und mit Daten f&uuml;llen, sei es vordefiniert per XAML oder auch zur Laufzeit per Code. Dieser Artikel zeigt die Grundlagen zur Definition und Programmierung des ListBox-Steuerelements. Dabei erfahren Sie, wie Sie es mit einfachen Texten f&uuml;llen, Eintr&auml;ge selektieren, die Selektion auslesen und auf Ereignisse wie die ge&auml;nderte Auswahl oder einen Doppelklick reagieren k&ouml;nnen.<\/b><\/p>\n<h2>Programmiersprache<\/h2>\n<p>Die Beispiele in diesem Artikel basieren auf C#.<\/p>\n<h2>Hinweis<\/h2>\n<p>Um die verschiedenen Beispiele &uuml;bersichtlich darzustellen, haben wir diese statt in verschiedenen <b>Window<\/b>-Elementen in <b>Page<\/b>-Elementen untergebracht, die dann &uuml;ber das Ribbon im Kopf des Fensters <b>MainWindow <\/b>per Mausklick auf den jeweiligen Ribbon-Button ge&ouml;ffnet werden k&ouml;nnen.<\/p>\n<p>Die Definition des <b>RibbonButton<\/b>-Elements enth&auml;lt dann im Attribut <b>tag <\/b>den Namen des zu &ouml;ffnenden <b>Page<\/b>-Elements:<\/p>\n<pre>&lt;RibbonButton Label=\"Einfache Eintr&auml;ge\" Click=\"RibbonButton_Click\" Tag=\"pgeEinfacheEintraege\"&gt;&lt;\/RibbonButton&gt;<\/pre>\n<p>Die dort angegebene Ereignismethode <b>Ribbon_Button_Click <\/b>fragt den Wert des <b>Tag<\/b>-Attributs ab und &ouml;ffnet das entsprechende <b>Page<\/b>-Element im <b>Frame<\/b>-Steuerelement:<\/p>\n<pre>private void RibbonButton_Click(object sender, RoutedEventArgs e) {\r\n     RibbonButton button = (RibbonButton)sender;\r\n     string pge = button.Tag.ToString();\r\n     Workzone.Content = GetInstance(\"ListBox_Beispiele.\" + pge);\r\n}<\/pre>\n<h2>Listbox hinzuf&uuml;gen<\/h2>\n<p>Der erste und einfachste Schritt ist das Hinzuf&uuml;gen des ListBox-Elements: Dazu ziehen Sie es einfach aus der Toolbox in das WPF-Fenster und lassen es dort fallen.<\/p>\n<p>Oder Sie machen es wie ein richtiger Programmierer und f&uuml;gen ein <b>ListBox<\/b>-Element zur XAML-Definition des Fensters hinzu:<\/p>\n<pre>&lt;ListBox x:Name=\"lstBeispiel\" Height=\"100\" Width=\"300\" Margin=\"10,10\" HorizontalAlignment=\"Left\" VerticalAlignment=\"Top\"&gt;&lt;\/ListBox&gt;<\/pre>\n<p>Zusammen mit einem Label soll unsere erste Beispiel-ListBox dann wie folgt deklariert sein und im Entwurf wie in Bild 1 aussehen:<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_03\/pic_85_001.png\" alt=\"Entwurf unseres ListBox-Steuerelements\" width=\"549,6265\" height=\"378,2486\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Entwurf unseres ListBox-Steuerelements<\/span><\/b><\/p>\n<pre>&lt;Grid&gt;\r\n     &lt;Grid.RowDefinitions&gt;\r\n         &lt;RowDefinition&gt;&lt;\/RowDefinition&gt;\r\n     &lt;\/Grid.RowDefinitions&gt;\r\n     &lt;Grid.ColumnDefinitions&gt;\r\n         &lt;ColumnDefinition Width=\"100\"&gt;&lt;\/ColumnDefinition&gt;\r\n         &lt;ColumnDefinition&gt;&lt;\/ColumnDefinition&gt;\r\n     &lt;\/Grid.ColumnDefinitions&gt;\r\n     &lt;Label Grid.Column=\"0\" Margin=\"10,10,10,10\"&gt;Listbox:&lt;\/Label&gt;\r\n     &lt;ListBox x:Name=\"lstBeispiel\" Grid.Column=\"1\" Margin=\"10,10,10,10\"&gt;&lt;\/ListBox&gt;\r\n&lt;\/Grid&gt;<\/pre>\n<h2>Eintr&auml;ge vordefinieren<\/h2>\n<p>Vielleicht wissen Sie schon zur Entwurfszeit, welche Eintr&auml;ge die Liste anzeigen soll. Dann k&ouml;nnen Sie diese Elemente einfach per XAML festlegen. Der XAML-Code f&uuml;r die ListBox sieht dann wie folgt aus:<\/p>\n<pre>&lt;ListBox x:Name=\"lstEintraege\" Grid.Column=\"1\" Margin=\"10,10,10,10\"&gt;\r\n     &lt;ListBoxItem&gt;Erster Eintrag&lt;\/ListBoxItem&gt;\r\n     &lt;ListBoxItem&gt;Zweiter Eintrag&lt;\/ListBoxItem&gt;\r\n     &lt;ListBoxItem&gt;Dritter Eintrag&lt;\/ListBoxItem&gt;\r\n     &lt;ListBoxItem&gt;Vierter Eintrag&lt;\/ListBoxItem&gt;\r\n&lt;\/ListBox&gt;<\/pre>\n<p>Diese Eintr&auml;ge werden dann in der ListBox wie in Bild 2 angezeigt.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_03\/pic_85_003.png\" alt=\"Feste Beispieleintr&auml;ge in einem ListBox-Element\" width=\"499,6607\" height=\"335,3887\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Feste Beispieleintr&auml;ge in einem ListBox-Element<\/span><\/b><\/p>\n<h2>Element per XAML vorselektieren<\/h2>\n<p>Wenn Sie die Elemente per XAML vordefinieren, k&ouml;nnen Sie auch einen der Eintr&auml;ge vorselektieren. Dazu f&uuml;gen Sie dem betroffenen Element einfach das Attribut <b>IsSelected <\/b>hinzu und stellen es auf <b>true <\/b>ein:<\/p>\n<pre>&lt;ListBoxItem IsSelected=\"true\"&gt;Erster Eintrag&lt;\/ListBoxItem&gt;<\/pre>\n<h2>ListBox-Element mit Texten f&uuml;llen<\/h2>\n<p>Die erste Schaltfl&auml;che, die wir hinzuf&uuml;gen, soll einen Eintrag zum Listenfeld hinzuf&uuml;gen. Das erledigen wir mit der <b>Add<\/b>-Methode der <b>Items<\/b>-Auflistung der ListBox. Die Schaltfl&auml;che definieren wir wie folgt:<\/p>\n<pre>&lt;Button x:Name=\"btnNamen\" Grid.Column=\"0\" Grid.ColumnSpan=\"2\" Grid.Row=\"1\" Height=\"30\" Margin=\"10,10,10,10\" Click=\"btnNamen_Click\"&gt;Namen&lt;\/Button&gt;<\/pre>\n<p>Das <b>Click<\/b>-Ereignis soll diese Methode ausl&ouml;sen:&nbsp;&nbsp;&nbsp;&nbsp;<\/p>\n<pre>private void btnNeuerEintrag_Click(object sender, RoutedEventArgs e) {\r\n     lstEintraege.Items.Add(\"F&uuml;nfter Eintrag\");\r\n}<\/pre>\n<p>Das Ergebnis sieht schlie&szlig;lich wie in Bild 3 aus.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2017_03\/pic_85_002.png\" alt=\"Einf&uuml;gen einiger Eintr&auml;ge zu einem ListBox-Element\" width=\"499,6607\" height=\"185,7838\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Einf&uuml;gen einiger Eintr&auml;ge zu einem ListBox-Element<\/span><\/b><\/p>\n<h2>ListBox leeren<\/h2>\n<p>Wenn Sie alle Eintr&auml;ge aus der ListBox entfernen wollen, verwenden Sie die <b>Clear<\/b>-Methode der <b>Items<\/b>-Auflistung:<\/p>\n<pre>private void btnAlleLoeschen_Click(object sender, RoutedEventArgs e) {\r\n     lstEintraege.Items.Clear();\r\n}<\/pre>\n<h2>Einfach- oder Mehrfachauswahl<\/h2>\n<p>Der Benutzer kann nat&uuml;rlich einen oder mehrere Eintr&auml;ge in der ListBox ausw&auml;hlen. Ob er einen oder mehrere ausw&auml;hlen kann, legen Sie mit der Eigenschaft <b>SelectionMode<\/b> fest. Diese kann die folgenden Werte annehmen:<\/p>\n<ul>\n<li><b>Single<\/b>: Standardeinstellung. Es kann nur ein Eintrag gleichzeitig ausgew&auml;hlt sein. Allerdings kann der gew&auml;hlte Eintrag auch nur noch abgew&auml;hlt werden, indem man einen anderen Eintrag ausgew&auml;hlt.<\/li>\n<li><b>Multiple<\/b>: Der Benutzer kann einen, keinen oder mehrere Eintr&auml;ge ausw&auml;hlen. Zum Aus- oder Abw&auml;hlen muss der jeweilige Eintrag angeklickt werden.<\/li>\n<li><b>Extended<\/b>: Der Benutzer kann einen, keinen oder mehrere Eintr&auml;ge ausw&auml;hlen. Zum Aus- oder Abw&auml;hlen gibt es mehrere M&ouml;glichkeiten: Ein einfacher Klick w&auml;hlt einen Eintrag aus und alle anderen ab. Klicken bei gedr&uuml;ckter <b>Strg<\/b>-Taste arbeitet wie die Einstellung <b>Multiple<\/b>. Klicken bei gedr&uuml;ckter <b>Umschalt<\/b>-Taste w&auml;hlt Bereiche aus.<\/li>\n<\/ul>\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\/55000085\/\">\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\/55000085?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\/55000085\/\"\/>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_login_nonce\" value=\"7c46eb013a\"\/>\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>Wer unter Access\/VBA gern das Listenfeld als Steuerelement genutzt hat, wird unter WPF ein &auml;hnliches Steuerelement verwenden wollen. Ein einfach aufgebautes Steuerelement zur Anzeige von Texten in Listenform ist das ListBox-Steuerelement. Es l&auml;sst sich sehr leicht definieren und mit Daten f&uuml;llen, sei es vordefiniert per XAML oder auch zur Laufzeit per Code. Dieser Artikel zeigt die Grundlagen zur Definition und Programmierung des ListBox-Steuerelements. Dabei erfahren Sie, wie Sie es mit einfachen Texten f&uuml;llen, Eintr&auml;ge selektieren, die Selektion auslesen und auf Ereignisse wie die ge&auml;nderte Auswahl oder einen Doppelklick reagieren 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,66032017,44000002,44000026,44000030,44000015],"tags":[],"yst_prominent_words":[],"class_list":["post-55000085","post","type-post","status-publish","format-standard","hentry","category-662017","category-66032017","category-Benutzeroberflaeche_mit_WPF","category-Outlook_programmieren","category-PowerPoint_programmieren","category-WPFSteuerelemente"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000085","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=55000085"}],"version-history":[{"count":0,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000085\/revisions"}],"wp:attachment":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/media?parent=55000085"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/categories?post=55000085"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/tags?post=55000085"},{"taxonomy":"yst_prominent_words","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/yst_prominent_words?post=55000085"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}