Изменить источник ICollectionView в MVVM - PullRequest
1 голос
/ 01 апреля 2019

Мой вопрос связан с этим сообщением , но я создаю новое сообщение, так как вопрос очень старый.

Я начинаю использовать 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?Стоит ли это того? (Кроме сохранения группировки / сортировки).

...