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