WPF DataGrid, определенный в DataTemplate с использованием CollectionViewSource для сортировки, не сортируется при перерC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 WPF DataGrid, определенный в DataTemplate с использованием CollectionViewSource для сортировки, не сортируется при перер

Сообщение Anonymous »

Здесь у меня есть представление, определенное в XAML следующим образом: первый DataGrid отображает список строк. Когда пользователь выбирает строку, ContentControl отображает информацию об этом выбранном элементе, включая список подэлементов. Эти подэлементы отображаются в другом DataGrid. Каждый подэлемент имеет свойство Index, используемое для определения порядка сортировки подэлементов с помощью CollectionViewSource в ресурсах ContentControl. Подэлементы DataGrid имеют свойство ItemsSource, привязанное к CollectionViewSource.




....












А вот как MyUserControl определяется в XAML:
xmlns:scm="clr-namespace:System.ComponentModel;assembly=WindowsBase"









....




Свойство Index не используется в столбце DataGrid. Он используется, чтобы предоставить пользователям возможность размещать подэлементы в том порядке, в котором они хотят, нажимая кнопки (Вверх и Вниз). Сортировка работает нормально, когда выбран первый элемент. Однако как только пользователь выбирает другой элемент, SubItemsDataGrid не отображает подэлементы в отсортированном порядке. Даже при повторном выборе первого элемента сортировка больше не работает.
Я попробовал использовать ItemsContol вместо DataGrid, чтобы быть уверенным, что CollectionViewSource обеспечивает правильный упорядоченный список. Это работает.
Затем я попытался перехватить событие DdataContextChanged DataGrid, в котором я написал код для замены itemsSource:
private void SubItemsDataGrid_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e)

{
DataGrid dg = sender as DataGrid;
dg.ItemsSource = null;
ICollectionView view = CollectionViewSource.GetDefaultView(((IEnumerable)dg.DataContext).SubItems);
view.SortDescriptions.Add(new SortDescription("Index", ListSortingOrder.Ascending));
view.Refresh();
dg.ItemsSource = view;
}

Я пробовал много других вариантов назначения ItemsSource DataGrid, но все они потерпели неудачу. Похоже, что DataGrid управляет сортировкой скрытым способом.
Я также пытался определить DataGrid в его собственном DataTemplate и раздувать его каждый раз, когда DataContextChanged< Для элемента MyUserControl было запущено событие /code>.
Вопрос: знаете ли вы, как заставить DataGrid принимать входящий отсортированный список? Или вы знаете другой способ сделать все это, зная, что я выбрал DataGrid, потому что он имеет встроенные функции создания и удаления новых элементов?
< strong>EDIT Я также пытался определить скрытый столбец в DataGrid, привязанный к свойству Index, и настроить DataGrid для сортировки из этого скрытого столбца, но это не работает :



Подробнее здесь: https://stackoverflow.com/questions/791 ... rting-does
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • WPF CollectionViewSource не обновляет пользовательский интерфейс
    Anonymous » » в форуме C#
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • WPF CollectionViewSource не обновляет пользовательский интерфейс
    Anonymous » » в форуме C#
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Реализация ListView с помощью CollectionViewSource – не обновляется?
    Anonymous » » в форуме C#
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Правильный способ использования CollectionViewSource в ViewModel
    Anonymous » » в форуме C#
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Как установить DataTemplate для WPF TreeView для отображения всех элементов списка?
    Anonymous » » в форуме C#
    0 Ответы
    37 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»