2015-02-24 4 views
2

Я попытался создать простой UserControl в WPF, используя MVVM. Теперь мне нужно создать свойство зависимостей для UserControl, поэтому я попытался создать свойство зависимостей в UserControlViewModel (я не хочу быть в коде).Должен ли ViewModel наследовать DependencyObject в WPF?

Чтобы создать свойство зависимости в UserControlViewModel, мне нужно наследовать от DependencyObject. Хорошая практика - наследовать DependencyObject в UserControlViewModel? То есть, это хороший способ следовать MVVM для разработки UserControl?

+1

Это не очень хорошая практика, чтобы унаследовать DependencyObject в ViewModel при использовании шаблона MVVM. Вместо этого используйте INotifyPropertyChanged – Coding4Fun

ответ

6

Если вы создали пользовательский элемент управления со свойствами, которые вы хотите, чтобы они были Привязываемыми (например следующий код), вы не может использовать INotifyPropertyChanged и вы должны использовать DependencyObject.

<MyUserControl MyDependencyProperty="{Binding PropertyPath}" /> 

Но при использовании DependencyObjects вы должны иметь в виду, что:

  1. DependencyObjects не помечаются как сериализации.
  2. Класс DependencyObject класс переопределяет и уплотняет и Equals() и GetHashCode() методы.
    • Чтобы увидеть хороший пример MVVM, рассматривающей реализацию INPC и DP в View-модели увидеть эту article.

    • Подробнее о дискуссиях ИНКП и ДП, читайте this blog.

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