Привязка WPF DataGrid напрямую к EntityCollection <T> - PullRequest
4 голосов
/ 08 апреля 2011

Я понимаю, что wpf поддерживает автоматическое обновление DataGrids и Listboxes (т.е. добавление новых элементов и удаление удаленных) с помощью интерфейса INotifyCollectionChanged, который реализует ObservableCollection.Однако по какой-то причине у меня, похоже, есть полная успешная привязка к EntityCollection<T> от EntityFramework, который, похоже, не реализует INotifyCollectionChanged.Есть ли другой способ, которым WPF делает это?

Я просто хотел бы знать, как это работает.

РЕДАКТИРОВАТЬ

Вот соответствующая часть из ответа.Краткая форма заключается в том, что он «просто работает» с привязками WPF и WinForms.

В настоящее время EntityCollection не реализует INotifyCollectionChanged, который является «новым» стандартным интерфейсом для уведомления об изменениях коллекции.Однако список привязок, который вы можете получить для EntityCollection (и который обычно получает привязка данных при передаче и EntityCollection в качестве источника данных), представляет собой IBindingList, который имеет собственный «старый» стандартный способ уведомления об изменениях коллекции (а именно ListChangedсобытие).В общем, привязка данных WinForms и WPF знает, как работать с этим интерфейсом.

Ответы [ 2 ]

2 голосов
/ 05 мая 2011

Вы можете взглянуть на EntityObservableCollection , который можно найти в BookLibrary примере приложения WPF Application Framework (WAF) . Это гарантирует, что привязка WPF распознает все обновления.

2 голосов
/ 08 апреля 2011

По-видимому, ошибка была подана *1002* по этому вопросу, но она была закрыта как "намеренно" (по крайней мере, не для .NET 4).

Как это сообщение объясняет, что EntityCollection эффективно использует «старый» или WinForms способ уведомления об изменении списка, который использует IBindingList.В то время как WPF использует «новый» интерфейс INotifyCollectionChanged.

Этот пост в блоге объясняет хороший способ обернуть коллекцию EntityCollection пользовательским списком ListCollectionView, который можно назначить свойству ItemsSource.

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