Где я могу определить свойства зависимостей, совместно используемые подробными представлениями в сценарии WPF master-detail MVVM? - PullRequest
1 голос
/ 23 мая 2010

Я могу придумать два способа реализации свойств зависимостей, которые разделяются между подробными представлениями:

  1. Сохраните их в модели основного вида, добавьте привязки данных к моделям подробного вида при их создании и привяжите к ним в подробном представлении.
  2. Ни в коем случае не сохраняйте их в моделях представления, а используйте FindAncestor для прямой привязки к свойствам основного представления.

Каковы плюсы и минусы каждого, и есть ли другие / лучшие варианты?

Edit:

Чтобы уточнить, у меня есть пользовательский элемент управления (производный от Control), который использует модель основного представления для своего DataContext. Шаблон элемента управления пользовательского элемента управления содержит ItemsControl с ItemsSource, связанным со свойством зависимости в модели основного представления. Это свойство зависимости представляет собой ObservableCollection объектов модели подробного представления. Шаблон элемента ItemsControl связывается со свойствами в модели подробного представления. Мне нужно одно свойство, которое совместно используется шаблоном элемента управления пользовательского элемента управления (главное представление) и шаблоном элемента для всех элементов в ItemsControl. Пользовательский элемент управления будет содержать ползунок или что-то для установки значения, а шаблон элемента просто прочитает его.

Извините, если я злоупотребляю терминами, я все еще пытаюсь освоить MVVM. Если проблема все еще неясна, я могу попытаться написать некоторый код для простого теста.

1 Ответ

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

Реализация свойств зависимостей в коде представления является самой популярной практикой, которую я видел. Это позволяет вам взаимодействовать с DP через привязку данных к ViewModel. На самом деле никаких минусов нет, DP предназначены для того, чтобы использовать один объект, необходимый для реализации привязки данных.

Если вышеприведенное не то, о чем вы просите, пожалуйста, приложите краткий пример кода к.

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