WPF MVVM и вложенные представления со свойствами зависимости - PullRequest
1 голос
/ 09 сентября 2009

У меня есть родительское представление, которое определяет дочернее представление в Xaml. Дочернее представление имеет DependencyProperty, которое связано с ViewModel родительского представления. Однако это значение также необходимо для ViewModel дочернего представления.

<custom:Parent>
  <custom:Child ChildId="{Binding ParentFooId}" ... />
</custom:Parent>

ChildId реализовано как свойство зависимости элемента управления ChildView. Если ChildViewModel требуется ParentFooId, каков правильный способ получения MVVM?

Я не хочу преобразовывать DataContext ChildView в ChildViewModel и устанавливать значение в обработчике OnChildIdChanged ChildView. Мне кажется, это не очень MVVM.

Другая альтернатива, о которой я подумал, - это создать новый ChildViewModel со значением и установить его как DataContext в событии OnParentFooIdChangedParentViewModel); но это тоже не совсем правильно, поскольку предполагается, что ViewModels не обращают внимания на View (и, следовательно, ничего не знают о DataContext s).

Кажется, я упускаю что-то очевидное ...

Ответы [ 2 ]

3 голосов
/ 06 ноября 2009

Если я правильно понимаю вопрос, вам просто нужно создать модель дочернего представления в модели родительского представления, передав и сохранив ссылку на модель родительского представления. Таким образом, вы можете ссылаться на любое свойство модели родительского представления из модели дочернего представления и связываться с любым из них в дочернем представлении.

0 голосов
/ 05 ноября 2009

Если вы просто пытаетесь передать данные из свойства зависимостей в вашу модель представления, я бы использовал событие PropertyChangedCallback. Добавьте обработчик, который отправляет измененные данные в вашу модель представления. Возможно, я неправильно понимаю ваше намерение.

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