/ / WPF DataGrid wird nach Code hinter der Änderung nicht aktualisiert - c #, wpf, mvvm, binding, datagrid

WPF DataGrid wird nach dem Code hinter der Änderung nicht aktualisiert - c #, wpf, mvvm, binding, datagrid

Ok Leute, also ich habe ein Datagrid, das erfrischt wirdmit Daten aus einer Dropdown-Liste aus dem Ansichtsmodell. Alles funktioniert gut. Vor kurzem musste ich eine Änderung vornehmen, die den Klick auf den DatagridColumnHeader betraf. Das Einzige, was ich denken konnte, war, es so zu handhaben und das war mit dem Codeebehind :(.

<DataGrid.Resources>
<Style TargetType="{x:Type DataGridColumnHeader}">
<EventSetter Event="Click" Handler="columnHeader_Click" />
</Style>
</DataGrid.Resources>

und im Code hinter diesem Ereignis behandelt. Jetzt mache ich im Code hinter dem Datagrid Änderungen

System.Windows.Controls.Primitives.DataGridColumnHeader col = (System.Windows.Controls.Primitives.DataGridColumnHeader)sender;
ObservableCollection<tbMain> dc = (ObservableCollection<tbMain>)m_DataGrid.DataContext;
ObservableCollection<tbMain> sortedNewId = new ObservableCollection<tbMain>();

m_DataGrid.ItemsSource = sortedNewId;
m_DataGrid.Items.Refresh();

Jetzt funktioniert der gesamte Code und aktualisiert mein DataGridGut, aber ich habe die Bindung zwischen dem Viewmodel und DataGrid gebrochen, da jetzt, wenn ich etwas aus der Dropdown-Liste auswähle, das Raster nicht mehr mit den neuen Daten aktualisiert wird, bis ich auf die Kopfzeile des DataGrid klicke. Irgendeine Idee, Jungs?

Antworten:

0 für die Antwort № 1

Es scheint, dass Sie DataGrid-Elemente ändernQuelle aus Bindungsausdruck (der Datengrid darüber informiert, dass die Quelle aktualisiert wurde), um den Verweis auf die Sammlung zu verdeutlichen, wodurch die Aktualisierungslogik entfernt wird. Sie sollten die Quellensammlung ändern, nicht die Elementquelle. Sie können CollectionView als Quelle für den Bindungsausdruck zum Sortieren verwenden, indem Sie SortDescriptions zu CollectionView hinzufügen und Refresh aufrufen