Мой вопрос связан с этим сообщением , но я создаю новое сообщение, так как вопрос очень старый.
Я начинаю использовать ICollectionView
, поэтому я сделал ViewModelследующим образом:
public ICollectionView SampleListView { get; set; }
SampleListView = new CollectionViewSource() { Source = SampleList }.View;
Проблема в том, что когда я меняю источник, я делал следующее:
List<T> list= GetMyList();
SampleList=new ObservableCollection<T>(list);
Принятый ответ (от изготовителя вслепую) объясняет, что существует дваВарианты решения этой проблемы:
1) Вместо замены ObservableCollection вы можете использовать .Clear () и добавить элементы из новой Коллекции.Это дает дополнительный бонус - не нарушать группировку и сортировку.
2) * при замене ObservableCollection необходимо создать новый ICollectionView для сортировки и группировки.
this._view = (ICollectionView)CollectionViewSource.GetDefaultView(this.MyCollection);
Вы можете просто привязать свою коллекцию, если возьмете DefaultView
<DataGrid Name="grid" ItemsSource="{Binding MyCollection}" />
Мой вопрос: каков наилучший способ сделать это?Я имею в виду «чистое» решение?
Для меня быстрее было бы использовать решение два (только потому, что у меня большой проект с большим количеством ListViews, и было бы большой работой, чтобы использовать вариант 1).Каковы преимущества выбора 1?Стоит ли это того? (Кроме сохранения группировки / сортировки).