{"id":55000117,"date":"2018-02-01T00:00:00","date_gmt":"2020-03-27T19:30:11","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=117"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Das_ListViewSteuerelement","status":"publish","type":"post","link":"https:\/\/vbentwickler.de\/Das_ListViewSteuerelement\/","title":{"rendered":"Das ListView-Steuerelement"},"content":{"rendered":"<p><b>Es gibt unter WPF sechs Steuerelemente, die eine Auswahl untergeordnete Elemente erm&ouml;glichen &#8211; ComboBox, ListBox, ListView, DataGrid, TabControl und Ribbon. In diesem Artikel schauen wir uns das ListView-Steuerelement an, das gegeben&uuml;ber dem ListBox-Element einige M&ouml;glichkeiten zur einfacheren Darstellung der enthaltenen Daten liefert, und zwar &uuml;ber die View-Eigenschaft. Im Vergleich zur ListBox bietet die ListView au&szlig;erdem standardm&auml;&szlig;ig die erweiterte Auswahl an &#8211; Sie k&ouml;nnen also direkt mehrere Eintr&auml;ge statt nur einem einzigen selektieren. Dieser Artikel zeigt, wie Sie das ListView-Steuerelement zur Anzeige von Daten aus einer Collection von Entit&auml;ten anzeigen k&ouml;nnen.<\/b><\/p>\n<p>Das <b>ListView<\/b>-Steuerelement bietet eine ziemlich einfache M&ouml;glichkeit, die Daten etwa aus einer <b>ObservableCollection <\/b>zur Auswahl anzubieten. F&uuml;r die Anzeige einiger Daten am Beispiel von Adressdaten haben wir die folgende Klasse f&uuml;r das Fenster <b>MainWindow.cs <\/b>eines frischen WPF-Projekts angelegt. Dieses h&auml;lt eine <b>ObservableCollection <\/b>mit Elementen des Typs <b>Adresse <\/b>namens <b>Adressen <\/b>als &ouml;ffentliche Eigenschaft bereit und f&uuml;llt diese Collection in der Konstruktor-Methode mit einigen Elementen:<\/p>\n<pre><span style=\"color:blue;\">Class<\/span> MainWindow\r\n     <span style=\"color:blue;\">Public <\/span>Property Adressen<span style=\"color:blue;\"> As <\/span>ObservableCollection(Of Adresse)\r\n     <span style=\"color:blue;\">Public <\/span>Sub New()\r\n         InitializeComponent()\r\n         Adressen = <span style=\"color:blue;\">New<\/span> ObservableCollection(Of Adresse)\r\n         Adressen.Add(<span style=\"color:blue;\">New<\/span> Adresse <span style=\"color:blue;\">With<\/span> {.Anrede = \"Herr\", .EMail = \"andre@minhorst.com\", .Firma = \"Andr&eacute; Minhorst Verlag\", _\r\n              .ID = 1, .Land = \"Deutschland\", .Nachname = \"Minhorst\", .Ort = \"Duisburg\", .PLZ = \"47137\", _\r\n              .Strasse = \"Borkhofer Str. 17\", .Telefon = \"0123\/123456\", .Vorname = \"Andr&eacute;\"})\r\n         ''...weitere Adressen\r\n         DataContext = Me\r\n     End Sub\r\n<span style=\"color:blue;\">End Class<\/span><\/pre>\n<p>Die Klasse <b>Adresse.vb <\/b>sieht etwa wie folgt aus:<\/p>\n<pre><span style=\"color:blue;\">Public Class<\/span> Adresse\r\n     <span style=\"color:blue;\">Public <\/span>Property ID<span style=\"color:blue;\"> As Integer<\/span>\r\n     <span style=\"color:blue;\">Public <\/span>Property Firma<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Public <\/span>Property Anrede<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Public <\/span>Property Vorname<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Public <\/span>Property Nachname<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Public <\/span>Property Strasse<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Public <\/span>Property PLZ<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Public <\/span>Property Ort<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Public <\/span>Property Land<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Public <\/span>Property EMail<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Public <\/span>Property Telefon<span style=\"color:blue;\"> As String<\/span>\r\n<span style=\"color:blue;\">End Class<\/span><\/pre>\n<p>Damit k&ouml;nnen wir schon das <b>Window<\/b>-Element mit dem <b>ListView<\/b>-Element best&uuml;cken. Damit dieses die Daten der Auflistung in der <b>ObservableCollection<\/b> anzeigt, ben&ouml;tigen wir ein paar Unterelemente. Als Erstes stellen wir jedoch f&uuml;r das <b>ListView<\/b>-Element die Datenherkunft ein, und zwar mit dem Attribut <b>ItemsSource<\/b>.<\/p>\n<p>Dieses legen wir auf den Wert <b>{Binding Adressen} <\/b>ein, was eine Bindung zu der mit der &ouml;ffentlichen Eigenschaft <b>Adressen <\/b>der Code behind-Klasse erzeugt. Dann f&uuml;gen wir diesem &uuml;ber ein Property Element die Eigenschaft <b>View <\/b>hinzu (<b><ListView.View><\/b>). Dieses erh&auml;lt schlie&szlig;lich das Element <b>GridView <\/b>und die untergeordneten Spaltenbeschreibungen <b>GridViewColumn<\/b>.<\/p>\n<p>In diesen Elementen legen wir mit der Eigenschaft <b>Header <\/b>die Spalten&uuml;berschriften und mit der Eigenschaft <b>DisplayMemberBinding <\/b>und dem Wert <b>{Binding <Feldname>} <\/b>den Inhalt des <b>ListView<\/b>-Elements fest:<\/p>\n<pre>&lt;Window x:Class=\"MainWindow\" ...        Title=\"MainWindow\" Height=\"350\" Width=\"525\"&gt;\r\n     &lt;Grid&gt;\r\n         &lt;ListView ItemsSource=\"{Binding Adressen}\" Margin=\"5\"&gt;\r\n             &lt;ListView.View&gt;\r\n                 &lt;GridView&gt;\r\n                     &lt;GridViewColumn Header=\"ID\" DisplayMemberBinding=\"{Binding ID}\" \/&gt;\r\n                     &lt;GridViewColumn Header=\"Firma\" DisplayMemberBinding=\"{Binding Firma}\" \/&gt;\r\n                     &lt;GridViewColumn Header=\"Anrede\" DisplayMemberBinding=\"{Binding Anrede}\" \/&gt;\r\n                     &lt;GridViewColumn Header=\"Vorname\" DisplayMemberBinding=\"{Binding Vorname}\" \/&gt;\r\n                     &lt;GridViewColumn Header=\"Nachname\" DisplayMemberBinding=\"{Binding Nachname}\" \/&gt;\r\n                     &lt;GridViewColumn Header=\"Stra&szlig;e\" DisplayMemberBinding=\"{Binding Strasse}\" \/&gt;\r\n                     &lt;GridViewColumn Header=\"PLZ\" DisplayMemberBinding=\"{Binding PLZ}\" \/&gt;\r\n                     &lt;GridViewColumn Header=\"Ort\" DisplayMemberBinding=\"{Binding Ort}\" \/&gt;\r\n                     &lt;GridViewColumn Header=\"Land\" DisplayMemberBinding=\"{Binding Land}\" \/&gt;\r\n                 &lt;\/GridView&gt;\r\n             &lt;\/ListView.View&gt;\r\n         &lt;\/ListView&gt;\r\n     &lt;\/Grid&gt;\r\n&lt;\/Window&gt;<\/pre>\n<p>Das Ergebnis sieht dann im Entwurf zun&auml;chst wie in Bild 1 aus.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2018_01\/pic_117_001.png\" alt=\"Entwurf des ListView-Elements\" width=\"499,6607\" height=\"330,7164\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Entwurf des ListView-Elements<\/span><\/b><\/p>\n<p>Starten Sie nun die Anwendung, erhalten Sie bereits die mit den Adressen gef&uuml;llte Liste aus Bild 2.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2018_01\/pic_117_002.png\" alt=\"Das ListView-Element in Aktion\" width=\"499,6607\" height=\"264,4809\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Das ListView-Element in Aktion<\/span><\/b><\/p>\n<p>Hier ein kurzer Hinweis darauf, dass wir f&uuml;r das Anlegen der <b>GridViewColumn<\/b>-Elemente die Standardeigenschaft des <b>GridView<\/b>-Elements nutzen, n&auml;mlich <b>Columns<\/b>. Ausgeschrieben s&auml;he der Code in gek&uuml;rzter Form wie folgt aus:<\/p>\n<pre>&lt;GridView&gt;\r\n     &lt;GridView.Columns&gt;\r\n         &lt;GridViewColumn Header=\"ID\" DisplayMemberBinding=\"{Binding ID}\" \/&gt;\r\n     &lt;\/GridView.Columns&gt;\r\n&lt;\/GridView&gt;<\/pre>\n<h2>Eigenschaften des ListView-Steuerelements<\/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\/55000117\/\">\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\/55000117?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\/55000117\/\"\/>\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>Es gibt unter WPF sechs Steuerelemente, die eine Auswahl untergeordnete Elemente erm&ouml;glichen &#8211; ComboBox, ListBox, ListView, DataGrid, TabControl und Ribbon. In diesem Artikel schauen wir uns das ListView-Steuerelement an, das gegeben&uuml;ber dem ListBox-Element einige M&ouml;glichkeiten zur einfacheren Darstellung der enthaltenen Daten liefert, und zwar &uuml;ber die View-Eigenschaft. Im Vergleich zur ListBox bietet die ListView au&szlig;erdem standardm&auml;&szlig;ig die erweiterte Auswahl an &#8211; Sie k&ouml;nnen also direkt mehrere Eintr&auml;ge statt nur einem einzigen selektieren. Dieser Artikel zeigt, wie Sie das ListView-Steuerelement zur Anzeige von Daten aus einer Collection von Entit&auml;ten anzeigen 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":[66012018,662018,44000039,44000015],"tags":[],"yst_prominent_words":[],"class_list":["post-55000117","post","type-post","status-publish","format-standard","hentry","category-66012018","category-662018","category-Setup_und_Weitergabe","category-WPFSteuerelemente"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000117","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=55000117"}],"version-history":[{"count":0,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000117\/revisions"}],"wp:attachment":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/media?parent=55000117"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/categories?post=55000117"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/tags?post=55000117"},{"taxonomy":"yst_prominent_words","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/yst_prominent_words?post=55000117"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}