Могу ли я иметь модель MVVM, унаследованную от другой модели? - PullRequest
1 голос
/ 02 января 2012

У меня есть класс ProductViewModel, который содержит различные свойства. Затем у меня есть класс ProductDetailsViewModel, который наследуется от класса ProducViewModel. Причина, по которой я это делаю, заключается в том, чтобы получить правильную среду связывания и избежать дублирования свойств из предыдущего представления.

Мне разрешено делать это или каждая ViewModel должна быть четко изолирована?

Через код я могу получить доступ к свойствам класса ProductViewModel из представления ProductDetailsViewModel, но когда я устанавливаю текст данных моего ProductDetailView для класса ProducDetailsViewModel и URI свойств привязки, например, который определяется внутри унаследованного класса, связывание, по-видимому, не происходит.

Есть идеи?

Ответы [ 2 ]

1 голос
/ 02 января 2012

Да, это нормально, и я делаю это все время в своих проектах WPF, поэтому он должен просто работать.Некоторые предложения:

  • Можете ли вы проверить окно вывода при отладке приложения.Существуют ли какие-либо ошибки привязки, указывающие на неправильную привязку xaml?
  • Используете ли вы какие-либо шаблоны данных в xaml, которые привязываются к определенному типу, например, ProductViewModel, а не ProductDetailsViewModel?
  • Реализует ли базовый тип (ProductViewModel) INotifyPropertyChanged?
  • Все лисвойств в ProductViewModel и ProductSetailsViewModel, вызывающих событие PropertyChanged с прямым вводом имени свойства строки?

С уважением,

1 голос
/ 02 января 2012

Вы тоже можете сделать это, но я думаю, может быть, лучше было бы разделить их и использовать инъекцию зависимости.

Вы создаете и взаимодействуете с ProductViewModel и внедряете его, а затем внедряете это в ProductDetailsViewModel.

MVVM + WPF + DI

MSDN DI

...