Лучшая практика для пересылки ItemsSource - PullRequest
1 голос
/ 01 марта 2010

У меня есть UserControl, который содержит - среди прочего - ListView. ListView имеет контекст данных, отличный от UserControl (этот контекст данных не отображается). Если кто-то использует мой контроль, я бы хотел, чтобы он мог (косвенно) связываться со свойством зависимостей ListView * ItemsSource. Он должен чувствовать , как будто пользователь привязан к типичному ItemsSource.

Я не уверен, что лучший способ продолжить. Рассмотрение того, как свойство ItemsControl ItemsSource работает в Reflector, показало некоторую логику, которая казалась немного более сложной, чем это необходимо для простой пересылки.

Моя лучшая идея на данный момент - представить коллекцию как свойство зависимости на внешнем элементе управления и при обновлении обновить ListView ItemsSource. Но я не уверен, какой тип должен иметь эта коллекция (например, должен ли я ObservableCollection<T>) или есть какие-то ошибки, на которые мне следует обратить внимание.

Любые предложения или советы будут высоко оценены.

Спасибо.

1 Ответ

4 голосов
/ 01 марта 2010

Используйте AddOwner, чтобы добавить свой UserControl в качестве владельца ItemsControl.ItemsSourceProperty. В новых метаданных свойства укажите измененный обратный вызов свойства, который устанавливает ItemsSource вашего ListView.

...