{"id":55000286,"date":"2021-10-01T00:00:00","date_gmt":"2022-02-15T13:16:57","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=286"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Navigieren_mit_CollectionViewSource","status":"publish","type":"post","link":"https:\/\/vbentwickler.de\/Navigieren_mit_CollectionViewSource\/","title":{"rendered":"Navigieren mit CollectionViewSource"},"content":{"rendered":"<p><b>Bisher haben wir oft mit Detailansichten von Datens&auml;tzen wie beispielsweise f&uuml;r Kunden oder Produkten gearbeitet, die zum Anlegen oder Bearbeiten eines einzelnen Datensatzes geeignet waren. Von Access kennen Sie die M&ouml;glichkeit, mit den Navigationsschaltfl&auml;chen auch in solchen Detailformularen zu navigieren und von einem zum anderen Datensatz zu wechseln, ohne zwischendurch zu einem &Uuml;bersichtsformular zu wechseln. In diesem Artikel wollen wir zeigen, wie Sie das unter WPF so abbilden k&ouml;nnen, wie es auch unter Access m&ouml;glich ist. Dabei nutzen wir die M&ouml;glichkeiten der CollectionViewSource. <\/b><\/p>\n<h2>Ziel des Artikels<\/h2>\n<p>In diesem Artikel wollen wir einer Seite, die eine Detailansicht eines Datensatzes  &#8211; hier eines Kunden &#8211; anzeigt, Navigationsschaltfl&auml;chen wie von den Formularen von Access bekannt hinzuf&uuml;gen. Die WPF-Seite besteht dabei grob aus einem <b>Grid<\/b>-Element, das wiederum zwei weitere <b>Grid<\/b>-Element aufnimmt.  Es definiert au&szlig;erdem im Element <b>Window.Resources <\/b>ein <b>CollectionViewSource<\/b>-Element, das wir im Code behind mit den anzuzeigenden Daten f&uuml;llen:<\/p>\n<pre>&lt;Window x:Class=\"MainWindow\" ... Title=\"MainWindow\" Height=\"450\" Width=\"800\"&gt;\r\n     &lt;Window.Resources&gt;\r\n         ...\r\n         &lt;CollectionViewSource x:Key=\"kundeViewSource\"&gt;&lt;\/CollectionViewSource&gt;\r\n     &lt;\/Window.Resources&gt;<\/pre>\n<p>Danach folgt die Definition des &uuml;bergeordneten <b>Grid<\/b>-Elements:<\/p>\n<pre>     &lt;Grid&gt;\r\n         &lt;Grid.RowDefinitions&gt;\r\n             &lt;RowDefinition Height=\"Auto\"&gt;&lt;\/RowDefinition&gt;\r\n             &lt;RowDefinition Height=\"Auto\"&gt;&lt;\/RowDefinition&gt;\r\n             &lt;RowDefinition Height=\"*\"&gt;&lt;\/RowDefinition&gt;\r\n         &lt;\/Grid.RowDefinitions&gt;<\/pre>\n<p>Das erste untergeordnete <b>Grid<\/b>-Element erh&auml;lt als <b>DataContext <\/b>das als statische Ressource hinterlegte <b>CollectionViewSource<\/b>-Element sowie einige Zeilen f&uuml;r die Anzeige der einzelnen Felder und Spalten zur Aufteilung von Bezeichnungsfeldern und gebundenen Steuerelementen:<\/p>\n<pre>         &lt;Grid DataContext=\"{StaticResource kundeViewSource}\"&gt;\r\n             &lt;Grid.RowDefinitions&gt;\r\n                 &lt;RowDefinition Height=\"Auto\"&gt;&lt;\/RowDefinition&gt;\r\n                 ...\r\n                 &lt;RowDefinition Height=\"*\"&gt;&lt;\/RowDefinition&gt;\r\n             &lt;\/Grid.RowDefinitions&gt;\r\n             &lt;Grid.ColumnDefinitions&gt;\r\n                 &lt;ColumnDefinition Width=\"Auto\"&gt;&lt;\/ColumnDefinition&gt;\r\n                 &lt;ColumnDefinition Width=\"Auto\"&gt;&lt;\/ColumnDefinition&gt;\r\n                 &lt;ColumnDefinition Width=\"*\"&gt;&lt;\/ColumnDefinition&gt;\r\n             &lt;\/Grid.ColumnDefinitions&gt;<\/pre>\n<p>Danach folgen die Definitionen f&uuml;r Steuerelemente, die in den einzelnen Zeilen und Spalten angezeigt werden sollen &#8211; zum Beispiel f&uuml;r die ID und den Vornamen:<\/p>\n<pre>             &lt;Label Content=\"ID:\" Grid.Column=\"0\" \/&gt;\r\n             &lt;TextBox x:Name=\"txtID\" Grid.Column=\"1\" HorizontalAlignment=\"Left\"                 Text=\"{Binding ID, Mode=TwoWay}\" Width=\"50\" IsEnabled=\"False\" BorderBrush=\"Transparent\" \/&gt;\r\n             &lt;Label Content=\"Vorname:\" Grid.Column=\"0\" Grid.Row=\"2\" \/&gt;\r\n             &lt;TextBox x:Name=\"txtVorname\" Grid.Column=\"1\" Grid.Row=\"2\" Width=\"202\" \r\n                 Text=\"{Binding Vorname, Mode=TwoWay, ValidatesOnDataErrors=True}\" Margin=\"2,2,0,3\" \/&gt;\r\n             ...\r\n         &lt;\/Grid&gt;<\/pre>\n<p>Das zweite untergeordnete <b>Grid<\/b>-Element enth&auml;lt ein <b>StackPanel<\/b>-Element mit den vier Schaltfl&auml;chen und dem Textfeld zur Anzeige der Position des  Datensatzzeigers beziehungsweise zur Eingabe des anzuzeigenden Datensatzes, das wir im folgenden Abschnitt beschreiben.<\/p>\n<h2>Aufbau der Navigationssteuerelemente<\/h2>\n<p>Die Navigationsschaltfl&auml;chen wollen wir genau wie unter Access abbilden. Das hei&szlig;t, dass wir von links nach rechts die folgenden Steuerelemente hinzuf&uuml;gen wollen:<\/p>\n<ul>\n<li>Schaltfl&auml;che zum Navigieren zum ersten Datensatz<\/li>\n<li>Schaltfl&auml;che zum Navigieren zum vorherigen Datensatz<\/li>\n<li>Textfeld zur Anzeige der aktuellen Position im Format <b>x von y<\/b>, wobei <b>y <\/b>die Gesamtzahl der angezeigten Datens&auml;tze enth&auml;lt. In dieses Textfeld kann der Benutzer die Position eingeben, zu der er navigieren m&ouml;chte.<\/li>\n<li>Schaltfl&auml;che zum Navigieren zum n&auml;chsten Datensatz<\/li>\n<li>Schaltfl&auml;che zum Navigieren zum letzten Datensatz<\/li>\n<\/ul>\n<p>Die Steuerelemente organisieren wir in einem <b>StackPanel<\/b>-Steuerelement mit horizontaler Ausrichtung, das wir wie folgt definieren:<\/p>\n<pre>&lt;StackPanel Orientation=\"Horizontal\" Grid.Row=\"10\" Grid.ColumnSpan=\"4\" &gt;\r\n     &lt;Button x:Name=\"btnFirst\" Click=\"btnFirst_Click\"&gt;\r\n         &lt;Image Source=\"images\/media_beginning.png\" Width=\"24\" Height=\"24\"&gt;&lt;\/Image&gt;\r\n     &lt;\/Button&gt;\r\n     &lt;Button x:Name=\"btnPrevious\" Click=\"btnPrevious_Click\"&gt;\r\n         &lt;Image Source=\"images\/media_playback.png\" Width=\"24\" Height=\"24\"&gt;&lt;\/Image&gt;\r\n     &lt;\/Button&gt;\r\n     &lt;TextBox x:Name=\"txtNavigation\" MinWidth=\"50\"         Text=\"{Binding MyCurrentPosition, UpdateSourceTrigger=LostFocus}\"         GotFocus=\"txtNavigation_GotFocus\"&gt;&lt;\/TextBox&gt;\r\n     &lt;Button x:Name=\"btnNext\" Click=\"btnNext_Click\"&gt;\r\n         &lt;Image Source=\"images\/media_play.png\" Width=\"24\" Height=\"24\"&gt;&lt;\/Image&gt;\r\n     &lt;\/Button&gt;\r\n     &lt;Button x:Name=\"btnLast\" Click=\"btnLast_Click\"&gt;\r\n         &lt;Image Source=\"images\/media_end.png\" Width=\"24\" Height=\"24\"&gt;&lt;\/Image&gt;\r\n     &lt;\/Button&gt;\r\n&lt;\/StackPanel&gt;<\/pre>\n<p>Die Bilddateien f&uuml;r die hier definierten <b>Image<\/b>-Elemente finden sie im Beispielprojekt im Ordner <b>images<\/b>. Der XAML-Code hierf&uuml;r sieht wie folgt aus:<\/p>\n<pre>&lt;Grid Grid.Row=\"1\"&gt;\r\n     &lt;StackPanel Orientation=\"Horizontal\" Grid.Row=\"10\" Grid.ColumnSpan=\"4\" &gt;\r\n         &lt;Button x:Name=\"btnFirst\" Click=\"btnFirst_Click\" IsEnabled=\"{Binding FirstOrPreviousEnabled}\"&gt;\r\n             &lt;Image Source=\"images\/media_beginning.png\" Width=\"24\" Height=\"24\"&gt;&lt;\/Image&gt;\r\n         &lt;\/Button&gt;\r\n         &lt;Button x:Name=\"btnPrevious\" Click=\"btnPrevious_Click\"             IsEnabled=\"{Binding FirstOrPreviousEnabled, UpdateSourceTrigger=PropertyChanged}\"&gt;\r\n             &lt;Image Source=\"images\/media_playback.png\" Width=\"24\" Height=\"24\"&gt;&lt;\/Image&gt;\r\n         &lt;\/Button&gt;\r\n         &lt;TextBox x:Name=\"txtNavigation\" MinWidth=\"50\"             Text=\"{Binding MyCurrentPosition, UpdateSourceTrigger=LostFocus}\"             GotFocus=\"txtNavigation_GotFocus\" KeyDown=\"txtNavigation_KeyDown\"&gt;&lt;\/TextBox&gt;\r\n         &lt;Button x:Name=\"btnNext\" Click=\"btnNext_Click\"             IsEnabled=\"{Binding NextOrLastEnabled, UpdateSourceTrigger=PropertyChanged}\"&gt;\r\n             &lt;Image Source=\"images\/media_play.png\" Width=\"24\" Height=\"24\"&gt;&lt;\/Image&gt;\r\n         &lt;\/Button&gt;\r\n         &lt;Button x:Name=\"btnLast\" Click=\"btnLast_Click\" \r\n             IsEnabled=\"{Binding NextOrLastEnabled, UpdateSourceTrigger=PropertyChanged}\"&gt;\r\n             &lt;Image Source=\"images\/media_end.png\" Width=\"24\" Height=\"24\"&gt;&lt;\/Image&gt;\r\n         &lt;\/Button&gt;\r\n     &lt;\/StackPanel&gt;\r\n&lt;\/Grid&gt;<\/pre>\n<p>F&uuml;r die Schaltfl&auml;chen finden Sie das Attribut <b>IsEnabled<\/b>, das wir an die Eigenschaften <b>FirstOrPreviousEnabled <\/b>beziehungsweise <b>NextOrLastEnabled <\/b>gebunden haben. Wie diese Eigenschaften definiert sind, beschreiben wir weiter unten.<\/p>\n<p>Der Entwurf des Fensters sieht anschlie&szlig;end wie in Bild 1 aus.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2021_05\/pic_286_001.png\" alt=\"Entwurf des Fensters zur Anzeige der Kunden mit Navigations\" width=\"424,6267\" height=\"338,6258\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Entwurf des Fensters zur Anzeige der Kunden mit Navigations<\/span><\/b><\/p>\n<h2>Anzeige der Daten <\/h2>\n<p>Damit &uuml;berhaupt Daten im Fenster angezeigt werden, verwenden wir im Code behind-Modul eine Variable, mit der wir die <b>CollectionViewSource <\/b>referenzieren, die wir im XAML-Code als Ressource definiert haben:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>kundeViewSource<span style=\"color:blue;\"> As <\/span>CollectionViewSource<\/pre>\n<p>Diese verbinden wir in der Konstruktor-Methode <b>New <\/b>mit der Ressource und stellen dann die Eigenschaft <b>Source <\/b>des <b>CollectionViewSource<\/b>-Elements auf den Wert der Funktion <b>GetKunden <\/b>ein:<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>New()\r\n     InitializeComponent()\r\n     DataContext = Me\r\n     kundeViewSource = (Me.FindResource(\"kundeViewSource\"))\r\n     kundeViewSource.Source = GetKunden()\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Die Funktion <b>GetKunden <\/b>erstellt eine <b>ObservableCollection <\/b>mit Elementen auf Basis der Klasse <b>Kunde<\/b>. Die Definition dieser Klasse sieht gek&uuml;rzt wie folgt aus:<\/p>\n<pre>Partial Public Class Kunde\r\n     <span style=\"color:blue;\">Public <\/span>Property ID<span style=\"color:blue;\"> As <\/span>System.Int32\r\n     <span style=\"color:blue;\">Public <\/span>Property Firma<span style=\"color:blue;\"> As <\/span>System.String\r\n     <span style=\"color:blue;\">Public <\/span>Property Vorname<span style=\"color:blue;\"> As <\/span>System.String\r\n     ...\r\n<span style=\"color:blue;\">End Class<\/span><\/pre>\n<p>Die Funktion <b>GetKunden <\/b>f&uuml;gt mit der <b>Add<\/b>-Methode jeweils ein neues Element hinzu:<\/p>\n<pre><span style=\"color:blue;\">Private Function <\/span>GetKunden()<span style=\"color:blue;\"> As <\/span>ObservableCollection(Of Kunde)\r\n     <span style=\"color:blue;\">Dim <\/span>Kunden<span style=\"color:blue;\"> As <\/span><span style=\"color:blue;\">New<\/span> ObservableCollection(Of Kunde)\r\n     Kunden.Add(<span style=\"color:blue;\">New<\/span> Kunde() <span style=\"color:blue;\">With<\/span> {.ID = 1, .Firma = \"Krahn GbR\", .Vorname = \"Adi\", _\r\n         .Nachname = \"Stratmann\", .Anrede = \"Herr\", .Strasse = \"Kremser Stra&szlig;e 54\", .PLZ = \"10589\", _\r\n         .Ort = \"Berlin\", .Land = \"Deutschland\", .EMail = \"adi@stratmann.de\", _\r\n         .Geburtsdatum = \"20.02.1939\", .Alter = 82, .Newsletter = -1})\r\n     ... ''weitere Add-Aufrufe\r\n     Return Kunden\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<h2>Schaltfl&auml;chen zum Navigieren in den Datens&auml;tzen<\/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\/55000286\/\">\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\/55000286?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\t\t\t\t\t<input type=\"hidden\" name=\"rcp_redirect\" value=\"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000286\/\"\/>\n\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"rcp_login_nonce\" value=\"a4d23571dd\"\/>\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>Bisher haben wir oft mit Detailansichten von Datens&auml;tzen wie beispielsweise f&uuml;r Kunden oder Produkten gearbeitet, die zum Anlegen oder Bearbeiten eines einzelnen Datensatzes geeignet waren. Von Access kennen Sie die M&ouml;glichkeit, mit den Navigationsschaltfl&auml;chen auch in solchen Detailformularen zu navigieren und von einem zum anderen Datensatz zu wechseln, ohne zwischendurch zu einem &Uuml;bersichtsformular zu wechseln. In diesem Artikel wollen wir zeigen, wie Sie das unter WPF so abbilden k&ouml;nnen, wie es auch unter Access m&ouml;glich ist. Dabei nutzen wir die M&ouml;glichkeiten der CollectionViewSource. <\/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":[662021,66052021,44000002,44000024],"tags":[],"yst_prominent_words":[],"class_list":["post-55000286","post","type-post","status-publish","format-standard","hentry","category-662021","category-66052021","category-Benutzeroberflaeche_mit_WPF","category-Berichte_und_Reporting"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.9 - aioseo.com -->\n\t<meta name=\"description\" content=\"Bisher haben wir oft mit Detailansichten von Datens\u00e4tzen wie beispielsweise f\u00fcr Kunden oder Produkten gearbeitet, die zum Anlegen oder Bearbeiten eines einzelnen Datensatzes geeignet waren. Von Access kennen Sie die M\u00f6glichkeit, mit den Navigationsschaltfl\u00e4chen auch in solchen Detailformularen zu navigieren und von einem zum anderen Datensatz zu wechseln, ohne zwischendurch zu einem \u00dcbersichtsformular zu wechseln. In diesem Artikel wollen wir zeigen, wie Sie das unter WPF so abbilden k\u00f6nnen, wie es auch unter Access m\u00f6glich ist. Dabei nutzen wir die M\u00f6glichkeiten der CollectionViewSource.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Andr\u00e9 Minhorst\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/vbentwickler.de\/Navigieren_mit_CollectionViewSource\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.9\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Visual Basic Entwickler - Das Magazin f\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Navigieren mit CollectionViewSource - Visual Basic Entwickler\" \/>\n\t\t<meta property=\"og:description\" content=\"Bisher haben wir oft mit Detailansichten von Datens\u00e4tzen wie beispielsweise f\u00fcr Kunden oder Produkten gearbeitet, die zum Anlegen oder Bearbeiten eines einzelnen Datensatzes geeignet waren. Von Access kennen Sie die M\u00f6glichkeit, mit den Navigationsschaltfl\u00e4chen auch in solchen Detailformularen zu navigieren und von einem zum anderen Datensatz zu wechseln, ohne zwischendurch zu einem \u00dcbersichtsformular zu wechseln. In diesem Artikel wollen wir zeigen, wie Sie das unter WPF so abbilden k\u00f6nnen, wie es auch unter Access m\u00f6glich ist. Dabei nutzen wir die M\u00f6glichkeiten der CollectionViewSource.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/vbentwickler.de\/Navigieren_mit_CollectionViewSource\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2022-02-15T13:16:57+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"-001-11-30T00:00:00+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Navigieren mit CollectionViewSource - Visual Basic Entwickler\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Bisher haben wir oft mit Detailansichten von Datens\u00e4tzen wie beispielsweise f\u00fcr Kunden oder Produkten gearbeitet, die zum Anlegen oder Bearbeiten eines einzelnen Datensatzes geeignet waren. Von Access kennen Sie die M\u00f6glichkeit, mit den Navigationsschaltfl\u00e4chen auch in solchen Detailformularen zu navigieren und von einem zum anderen Datensatz zu wechseln, ohne zwischendurch zu einem \u00dcbersichtsformular zu wechseln. In diesem Artikel wollen wir zeigen, wie Sie das unter WPF so abbilden k\u00f6nnen, wie es auch unter Access m\u00f6glich ist. Dabei nutzen wir die M\u00f6glichkeiten der CollectionViewSource.\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Navigieren_mit_CollectionViewSource\\\/#blogposting\",\"name\":\"Navigieren mit CollectionViewSource - Visual Basic Entwickler\",\"headline\":\"Navigieren mit CollectionViewSource\",\"author\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/author\\\/andreminhorst-com\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"..\\\/fileadmin\\\/_temp_\\\/2021_05\\\/pic_286_001.png\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Navigieren_mit_CollectionViewSource\\\/#articleImage\"},\"datePublished\":\"2021-10-01T00:00:00+00:00\",\"dateModified\":\"-0001-11-30T00:00:00+00:00\",\"inLanguage\":\"de-DE\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Navigieren_mit_CollectionViewSource\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Navigieren_mit_CollectionViewSource\\\/#webpage\"},\"articleSection\":\"2021, 5\\\/2021, Benutzeroberfl\\u00e4che mit WPF, Berichte und Reporting\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Navigieren_mit_CollectionViewSource\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/vbentwickler.de\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2021\\\/#listItem\",\"name\":\"2021\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2021\\\/#listItem\",\"position\":2,\"name\":\"2021\",\"item\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2021\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2021\\\/5\\\/2021\\\/#listItem\",\"name\":\"5\\\/2021\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2021\\\/5\\\/2021\\\/#listItem\",\"position\":3,\"name\":\"5\\\/2021\",\"item\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2021\\\/5\\\/2021\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Navigieren_mit_CollectionViewSource\\\/#listItem\",\"name\":\"Navigieren mit CollectionViewSource\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2021\\\/#listItem\",\"name\":\"2021\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Navigieren_mit_CollectionViewSource\\\/#listItem\",\"position\":4,\"name\":\"Navigieren mit CollectionViewSource\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/category\\\/2021\\\/5\\\/2021\\\/#listItem\",\"name\":\"5\\\/2021\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/#organization\",\"name\":\"Datenbankentwickler\",\"description\":\"Das Magazin f\\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.\",\"url\":\"https:\\\/\\\/vbentwickler.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/vbentwickler.de\\\/wp-content\\\/uploads\\\/2022\\\/08\\\/cropped-header_vbe-1.png\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Navigieren_mit_CollectionViewSource\\\/#organizationLogo\",\"width\":664,\"height\":225},\"image\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Navigieren_mit_CollectionViewSource\\\/#organizationLogo\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/author\\\/andreminhorst-com\\\/#author\",\"url\":\"https:\\\/\\\/vbentwickler.de\\\/author\\\/andreminhorst-com\\\/\",\"name\":\"Andr\\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Navigieren_mit_CollectionViewSource\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Andr\\u00e9 Minhorst\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Navigieren_mit_CollectionViewSource\\\/#webpage\",\"url\":\"https:\\\/\\\/vbentwickler.de\\\/Navigieren_mit_CollectionViewSource\\\/\",\"name\":\"Navigieren mit CollectionViewSource - Visual Basic Entwickler\",\"description\":\"Bisher haben wir oft mit Detailansichten von Datens\\u00e4tzen wie beispielsweise f\\u00fcr Kunden oder Produkten gearbeitet, die zum Anlegen oder Bearbeiten eines einzelnen Datensatzes geeignet waren. Von Access kennen Sie die M\\u00f6glichkeit, mit den Navigationsschaltfl\\u00e4chen auch in solchen Detailformularen zu navigieren und von einem zum anderen Datensatz zu wechseln, ohne zwischendurch zu einem \\u00dcbersichtsformular zu wechseln. In diesem Artikel wollen wir zeigen, wie Sie das unter WPF so abbilden k\\u00f6nnen, wie es auch unter Access m\\u00f6glich ist. Dabei nutzen wir die M\\u00f6glichkeiten der CollectionViewSource.\",\"inLanguage\":\"de-DE\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/Navigieren_mit_CollectionViewSource\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/author\\\/andreminhorst-com\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/author\\\/andreminhorst-com\\\/#author\"},\"datePublished\":\"2021-10-01T00:00:00+00:00\",\"dateModified\":\"-0001-11-30T00:00:00+00:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/#website\",\"url\":\"https:\\\/\\\/vbentwickler.de\\\/\",\"name\":\"Datenbankentwickler\",\"description\":\"Das Magazin f\\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.\",\"inLanguage\":\"de-DE\",\"publisher\":{\"@id\":\"https:\\\/\\\/vbentwickler.de\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Navigieren mit CollectionViewSource - Visual Basic Entwickler","description":"Bisher haben wir oft mit Detailansichten von Datens\u00e4tzen wie beispielsweise f\u00fcr Kunden oder Produkten gearbeitet, die zum Anlegen oder Bearbeiten eines einzelnen Datensatzes geeignet waren. Von Access kennen Sie die M\u00f6glichkeit, mit den Navigationsschaltfl\u00e4chen auch in solchen Detailformularen zu navigieren und von einem zum anderen Datensatz zu wechseln, ohne zwischendurch zu einem \u00dcbersichtsformular zu wechseln. In diesem Artikel wollen wir zeigen, wie Sie das unter WPF so abbilden k\u00f6nnen, wie es auch unter Access m\u00f6glich ist. Dabei nutzen wir die M\u00f6glichkeiten der CollectionViewSource.","canonical_url":"https:\/\/vbentwickler.de\/Navigieren_mit_CollectionViewSource\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/vbentwickler.de\/Navigieren_mit_CollectionViewSource\/#blogposting","name":"Navigieren mit CollectionViewSource - Visual Basic Entwickler","headline":"Navigieren mit CollectionViewSource","author":{"@id":"https:\/\/vbentwickler.de\/author\/andreminhorst-com\/#author"},"publisher":{"@id":"https:\/\/vbentwickler.de\/#organization"},"image":{"@type":"ImageObject","url":"..\/fileadmin\/_temp_\/2021_05\/pic_286_001.png","@id":"https:\/\/vbentwickler.de\/Navigieren_mit_CollectionViewSource\/#articleImage"},"datePublished":"2021-10-01T00:00:00+00:00","dateModified":"-0001-11-30T00:00:00+00:00","inLanguage":"de-DE","mainEntityOfPage":{"@id":"https:\/\/vbentwickler.de\/Navigieren_mit_CollectionViewSource\/#webpage"},"isPartOf":{"@id":"https:\/\/vbentwickler.de\/Navigieren_mit_CollectionViewSource\/#webpage"},"articleSection":"2021, 5\/2021, Benutzeroberfl\u00e4che mit WPF, Berichte und Reporting"},{"@type":"BreadcrumbList","@id":"https:\/\/vbentwickler.de\/Navigieren_mit_CollectionViewSource\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/vbentwickler.de#listItem","position":1,"name":"Home","item":"https:\/\/vbentwickler.de","nextItem":{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/category\/2021\/#listItem","name":"2021"}},{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/category\/2021\/#listItem","position":2,"name":"2021","item":"https:\/\/vbentwickler.de\/category\/2021\/","nextItem":{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/category\/2021\/5\/2021\/#listItem","name":"5\/2021"},"previousItem":{"@type":"ListItem","@id":"https:\/\/vbentwickler.de#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/category\/2021\/5\/2021\/#listItem","position":3,"name":"5\/2021","item":"https:\/\/vbentwickler.de\/category\/2021\/5\/2021\/","nextItem":{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/Navigieren_mit_CollectionViewSource\/#listItem","name":"Navigieren mit CollectionViewSource"},"previousItem":{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/category\/2021\/#listItem","name":"2021"}},{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/Navigieren_mit_CollectionViewSource\/#listItem","position":4,"name":"Navigieren mit CollectionViewSource","previousItem":{"@type":"ListItem","@id":"https:\/\/vbentwickler.de\/category\/2021\/5\/2021\/#listItem","name":"5\/2021"}}]},{"@type":"Organization","@id":"https:\/\/vbentwickler.de\/#organization","name":"Datenbankentwickler","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.","url":"https:\/\/vbentwickler.de\/","logo":{"@type":"ImageObject","url":"https:\/\/vbentwickler.de\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png","@id":"https:\/\/vbentwickler.de\/Navigieren_mit_CollectionViewSource\/#organizationLogo","width":664,"height":225},"image":{"@id":"https:\/\/vbentwickler.de\/Navigieren_mit_CollectionViewSource\/#organizationLogo"}},{"@type":"Person","@id":"https:\/\/vbentwickler.de\/author\/andreminhorst-com\/#author","url":"https:\/\/vbentwickler.de\/author\/andreminhorst-com\/","name":"Andr\u00e9 Minhorst","image":{"@type":"ImageObject","@id":"https:\/\/vbentwickler.de\/Navigieren_mit_CollectionViewSource\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","width":96,"height":96,"caption":"Andr\u00e9 Minhorst"}},{"@type":"WebPage","@id":"https:\/\/vbentwickler.de\/Navigieren_mit_CollectionViewSource\/#webpage","url":"https:\/\/vbentwickler.de\/Navigieren_mit_CollectionViewSource\/","name":"Navigieren mit CollectionViewSource - Visual Basic Entwickler","description":"Bisher haben wir oft mit Detailansichten von Datens\u00e4tzen wie beispielsweise f\u00fcr Kunden oder Produkten gearbeitet, die zum Anlegen oder Bearbeiten eines einzelnen Datensatzes geeignet waren. Von Access kennen Sie die M\u00f6glichkeit, mit den Navigationsschaltfl\u00e4chen auch in solchen Detailformularen zu navigieren und von einem zum anderen Datensatz zu wechseln, ohne zwischendurch zu einem \u00dcbersichtsformular zu wechseln. In diesem Artikel wollen wir zeigen, wie Sie das unter WPF so abbilden k\u00f6nnen, wie es auch unter Access m\u00f6glich ist. Dabei nutzen wir die M\u00f6glichkeiten der CollectionViewSource.","inLanguage":"de-DE","isPartOf":{"@id":"https:\/\/vbentwickler.de\/#website"},"breadcrumb":{"@id":"https:\/\/vbentwickler.de\/Navigieren_mit_CollectionViewSource\/#breadcrumblist"},"author":{"@id":"https:\/\/vbentwickler.de\/author\/andreminhorst-com\/#author"},"creator":{"@id":"https:\/\/vbentwickler.de\/author\/andreminhorst-com\/#author"},"datePublished":"2021-10-01T00:00:00+00:00","dateModified":"-0001-11-30T00:00:00+00:00"},{"@type":"WebSite","@id":"https:\/\/vbentwickler.de\/#website","url":"https:\/\/vbentwickler.de\/","name":"Datenbankentwickler","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.","inLanguage":"de-DE","publisher":{"@id":"https:\/\/vbentwickler.de\/#organization"}}]},"og:locale":"de_DE","og:site_name":"Visual Basic Entwickler - Das Magazin f\u00fcr Datenbankentwickler auf Basis von Visual Studio und Co.","og:type":"article","og:title":"Navigieren mit CollectionViewSource - Visual Basic Entwickler","og:description":"Bisher haben wir oft mit Detailansichten von Datens\u00e4tzen wie beispielsweise f\u00fcr Kunden oder Produkten gearbeitet, die zum Anlegen oder Bearbeiten eines einzelnen Datensatzes geeignet waren. Von Access kennen Sie die M\u00f6glichkeit, mit den Navigationsschaltfl\u00e4chen auch in solchen Detailformularen zu navigieren und von einem zum anderen Datensatz zu wechseln, ohne zwischendurch zu einem \u00dcbersichtsformular zu wechseln. In diesem Artikel wollen wir zeigen, wie Sie das unter WPF so abbilden k\u00f6nnen, wie es auch unter Access m\u00f6glich ist. Dabei nutzen wir die M\u00f6glichkeiten der CollectionViewSource.","og:url":"https:\/\/vbentwickler.de\/Navigieren_mit_CollectionViewSource\/","og:image":"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png","og:image:secure_url":"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png","article:published_time":"2022-02-15T13:16:57+00:00","article:modified_time":"-001-11-30T00:00:00+00:00","twitter:card":"summary_large_image","twitter:title":"Navigieren mit CollectionViewSource - Visual Basic Entwickler","twitter:description":"Bisher haben wir oft mit Detailansichten von Datens\u00e4tzen wie beispielsweise f\u00fcr Kunden oder Produkten gearbeitet, die zum Anlegen oder Bearbeiten eines einzelnen Datensatzes geeignet waren. Von Access kennen Sie die M\u00f6glichkeit, mit den Navigationsschaltfl\u00e4chen auch in solchen Detailformularen zu navigieren und von einem zum anderen Datensatz zu wechseln, ohne zwischendurch zu einem \u00dcbersichtsformular zu wechseln. In diesem Artikel wollen wir zeigen, wie Sie das unter WPF so abbilden k\u00f6nnen, wie es auch unter Access m\u00f6glich ist. Dabei nutzen wir die M\u00f6glichkeiten der CollectionViewSource.","twitter:image":"https:\/\/datenbankentwickler.net\/wp-content\/uploads\/2022\/08\/cropped-header_vbe-1.png"},"aioseo_meta_data":{"post_id":"55000286","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"limit_modified_date":false,"created":"2024-01-30 16:23:23","updated":"2026-05-16 08:55:28","ai":null,"breadcrumb_settings":null,"seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/vbentwickler.de\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/vbentwickler.de\/category\/2021\/\" title=\"2021\">2021<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/vbentwickler.de\/category\/2021\/5\/2021\/\" title=\"5\/2021\">5\/2021<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tNavigieren mit CollectionViewSource\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/vbentwickler.de"},{"label":"2021","link":"https:\/\/vbentwickler.de\/category\/2021\/"},{"label":"5\/2021","link":"https:\/\/vbentwickler.de\/category\/2021\/5\/2021\/"},{"label":"Navigieren mit CollectionViewSource","link":"https:\/\/vbentwickler.de\/Navigieren_mit_CollectionViewSource\/"}],"_links":{"self":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000286","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=55000286"}],"version-history":[{"count":0,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/posts\/55000286\/revisions"}],"wp:attachment":[{"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/media?parent=55000286"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/categories?post=55000286"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/tags?post=55000286"},{"taxonomy":"yst_prominent_words","embeddable":true,"href":"https:\/\/vbentwickler.de\/data\/wp\/v2\/yst_prominent_words?post=55000286"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}