Хорошо, ребята, Итак, у меня есть Datagrid, который обновляется данными из выпадающего списка изнутри viewmodel. Все работает нормально. Недавно мне пришлось внести изменения, связанные с щелчком DatagridColumnHeader. Единственное, что я мог думать, чтобы справиться с ней таким образом, и это было с помощью CodeBehind :(.WPF DataGrid не будет обновляться после изменения кода
<DataGrid.Resources>
<Style TargetType="{x:Type DataGridColumnHeader}">
<EventSetter Event="Click" Handler="columnHeader_Click" />
</Style>
</DataGrid.Resources>
и в коде позади обрабатываются это событие. Теперь в коде позади Я внесении изменений в Datagrid
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();
Теперь весь этот код работает и обновляет мой DataGrid, но я, похоже, нарушил привязку между viewmodel и DataGrid, потому что теперь, когда я выбираю что-то из раскрывающегося списка, он больше не обновляет сетку новыми данными, пока я не щелкните заголовок DataGrid. Любая идея ребята
Почему вы меняете ItemSource вашей сетки данных на новую коллекцию, вместо того, чтобы использовать коллекцию, предоставляемую вашим просмотреть модель? (Сортировка не требует изменения ItemsSource.) – elgonzo
Попробуйте удалить 'Items.Refresh()'. Это может вызвать некоторые проблемы, поскольку он должен обновляться, когда вы устанавливаете 'ItemsSource'. Еще одна вещь, которую стоит попробовать - фактически передать вашу новую коллекцию в методе DataGrid.SetBinding (...). – TyCobb
@elgonzo причина, по которой я это делаю, потому что иначе мой datagrid не отображает отсортированные данные в порядке возрастания или убывания. – bewilderedprogrammer