2012-01-02 5 views
1

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

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

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

Любая идея?

ответ

1

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

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

MVVM + WPF + DI

MSDN DI

+0

хммм вы не образец, не делали этого и работать с тем, Dependency Injection – serge

+0

К сожалению, сейчас я не образец для этого, но Google является вашим другом тоже, и есть много примеров, чтобы учиться. Вы можете сделать свой DI вручную или с каркасом тоже. Unity Prism было бы приятно взглянуть, но чтобы начать, я думаю, что они будут немного сложны для понимания. – BigL

1

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

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

С наилучшими пожеланиями,

+0

Да, я получаю ошибки привязки при выполнении этого, потому что DataContext кажется неправильным. – serge

+0

для получения более подробной информации. Я разместил его здесь: http://social.msdn.microsoft.com/Forums/en/wpf/thread/6a1e2ddf-1eec-4339-9174-659de61f1d4b – serge

+0

Ваша привязка не работает, потому что ваш пользовательский элемент управления не работает, t имеет предка, который является «vm: ProductViewModel». Предки UserControls являются его родителями в Визуальном дереве, поэтому вам нужно искать более древнего предка в дереве, для которого DataContext установлен в ProductViewModel. – BigL

Смежные вопросы