Обновление Silverlight DataGrid наблюдаемой коллекции - PullRequest
0 голосов
/ 17 мая 2010

Я столкнулся с проблемой при обновлении наблюдаемой коллекции за моей Silverlight DataGrid (DataGrid связывается с PagedCollectionView с ObservableCollection в качестве источника).

Когда я очищаю наблюдаемую коллекцию и добавляю новые элементы в коллекцию, DataGrid перемещается вверх. Я хочу, чтобы DataGrid сохранял позицию прокрутки. Похоже, это происходит, если я удаляю элементы коллекции по одному с помощью метода RemoveAt и добавляю новые элементы по одному. Но почему существует такая разница между одновременным удалением всех элементов методом Clear и удалением элементов один за другим методом RemoveAt?

1 Ответ

0 голосов
/ 17 мая 2010

DataGrid отслеживает положение прокрутки как самый верхний элемент. При удалении всех элементов прокрутка DataGrid больше не существует, поскольку элементов нет. Чтобы позиция прокрутки имела какой-либо логический смысл, DataGrid должен содержать хотя бы один элемент.

Проблема, вероятно, связана с тем фактом, что при использовании ObservableCollection при вызове clear он вызывает событие CollectionChanged с EventArgs.Action, установленным в NotifyCollectionChangedAction.Reset, чтобы не удалять. Если вы используете Clear, возможно, вам потребуется реализовать собственную коллекцию INotifyCollectionChanged, которая никогда не выдаст NotifyCollectionChangedAction.Reset eset.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...