Entwickler-Ecke
WPF / Silverlight - TreeViewItem add SubItems mit OrderBy
Christoph1972 - Mi 19.03.14 21:34
Titel: TreeViewItem add SubItems mit OrderBy
Hallo Leute,
ich möchte an eine TreeView neue Items anhängen, diese sollen natürlich gleich angezeigt werden. Das funktioniert auch soweit, nur mit einem OrderBy nicht mehr. Hier mal der Code wie es funktioniert:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
| private void FillTreeView() { var t = MyContext.Sequences; treeViewTest.ItemsSource = t; }
private void treeViewTest_Expanded(object sender, RoutedEventArgs e) { Sequences seq = ((TreeView)sender).SelectedItem as Sequences;
TreeViewItem tvi = ((TreeView)sender).ItemContainerGenerator.ContainerFromItem(seq) as TreeViewItem; tvi.ItemsSource = seq.SequenceData; }
private void button1_Click(object sender, RoutedEventArgs e) { Sequences seq = ((TreeView)sender).SelectedItem as Sequences; seq.SequenceData.Add(new SequenceData() { SequenceName = "Test123", ID = "2500", Description = "Test 888" });
MyContext.SaveChanges(); } |
Das funktioniert wie gewünscht. Wird ein neus Item angehängt, so wird es gleich angezeigt. Nur wenn ich meine SubItems sortiere funktioniert es nicht mehr.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| private void treeViewTest_Expanded(object sender, RoutedEventArgs e) { Sequences seq = ((TreeView)sender).SelectedItem as Sequences;
TreeViewItem tvi = ((TreeView)sender).ItemContainerGenerator.ContainerFromItem(seq) as TreeViewItem; tvi.ItemsSource = seq.SequenceData.OrderBy(x => x.ID); } |
So werden die neuen Items nicht mehr angezeigt.
Ich habe gerade keine Idee wie ich das lösen kann. Wie würdet ihr das machen? Könnt ihr mich mal bitte kurz anschieben? :-)
Moderiert von
Th69: Kommentare im Code hervorgehoben
Christoph1972 - So 23.03.14 10:35
Hat niemand eine Idee oder Anregung?
Christoph1972 - Di 25.03.14 17:32
Sorry für die späte Antwort, vielen Dank für deine Unterstützung!
Ich habe alle möglichen Varianten versucht, vergebens. Sobald man einen Filter anwendet, funktioniert das PropertyChanged des NavigationProperty scheinbar nicht mehr.
Weitere Anregungen sind natürlich Herzlich Willkommen!
Th69 - Di 25.03.14 18:20
Hallo,
das Problem ist wohl, daß die ItemsSource nun nicht mehr direkt an das NavigationProperty gebunden ist und daher auf Änderungen nicht mehr reagiert.
Du müßtest dann wohl entweder eine eigene Klasse benutzen, welche IPropertyChanged (und evtl. ICollectionChanged) implementiert und daran binden oder aber doch händisch die ItemsSource neu binden.
Christoph1972 - Di 25.03.14 20:20
Th69 hat folgendes geschrieben : |
Du müßtest dann wohl entweder eine eigene Klasse benutzen, welche IPropertyChanged (und evtl. ICollectionChanged) implementiert und daran binden oder aber doch händisch die ItemsSource neu binden. |
Nur dann werden Änderungen an den Daten nicht mehr über meinen DataContext gespeichert. Ich werde morgen noch mal in diese Richtung forschen......
Vielen Dank!
Christoph1972 - Di 01.04.14 07:01
Das Problem besteht aktuell nicht mehr, da ich nicht mehr auf das NavigationProperty zugreife, sondern immer eine neue Abfrage starte mit order by. Die Items der NavigationProperty sind beim Zugriff nicht aktuell, daher musste eine neue Abfrage in der Expandet Methode her und das Problem war somit behoben.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!