WPF MVVM и вложенные представления со свойствами зависимости

StackOverflow https://stackoverflow.com/questions/1400226

Вопрос

У меня есть родительское представление, которое определяет дочернее представление в 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 в событии OnParentFooIdChanged ( в ParentViewModel ); но это тоже не совсем правильно, поскольку предполагается, что ViewModels не обращают внимания на View (и, следовательно, ничего не знают о DataContext s).

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

Это было полезно?

Решение

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top