2010-01-23 2 views
1

Я строю объектную модель с строго типизированными классами коллекции (например, CustomerCollection). Я хочу поддерживать полную двустороннюю привязку как к самой коллекции, так и ко всем моделям данных в коллекции.WPF: Каков правильный базовый класс для коллекций, используемых при связывании данных?

Для моделей кажется, что реализация INotifyPropertyChanged - это правильный способ подключения моделей. Но какой класс inferface/base следует использовать, чтобы WPF знал, когда изменяется содержимое моей коллекции?

ответ

3

ObservableCollection<T> - разработан специально для привязки WPF.

+0

Хотя это правда, на него нельзя положиться. У этого есть некоторые отступления, которые делают его frustriating время от времени. Если вы используете его для OM, вам нужно использовать else где, добавленная зависимость от WindowsBase.dll раздражает. –

+0

ObservableCollection (плюс INotifyCollectionChanged и ReadOnlyObservableCollection) были перенаправлены в System.dll для .Net 4 :-) – japf

0

Я бы порекомендовал вам набирать ваши свойства, которые вы раскрываете как IList, или IEnumerable (общий или нет, ваш выбор), а не ObservableCollection, поскольку он связывает вас с этой реализацией, и есть ряд ситуаций, которые это раздражает.

Конкретный интерфейс, в котором вам нужны ваши коллекции для реализации, является INotifyCollectionChanged.

+0

Я раскрываю свои свойства как конкретные коллекции (например, CustomerCollection), а не просто интерфейсы. Это означает, что я могу изменить базовый класс, когда захочу, за счет перекомпиляции. –