WPF+MVVM: как использовать старый добрый ViewModelBase, когда требуется DependencyProperty

Я использую сторонний элемент управления WPF, поддержка MVVM которого зависит от свойств зависимости от виртуальной машины, с которой он связан. Образец, поставляемый с элементом управления, использует класс ViewModelBase, производный от DependencyObject, поэтому все в порядке.

Мой ViewModelBase реализует INotifyPropertyChanged и по разным причинам нереально изменить его на DependencyObject.

У меня вопрос, как мне использовать мои ViewModels с этим элементом управления WPF? Я предполагаю, что мне нужно что-то вроде "встраивания объекта зависимости" или "подключения свойств зависимости" в простой старый ViewModel.

Кстати, мое MVVM-приложение основано на интерфейсе, то есть везде SomeViewModel - это ISomeViewModel.

1 ответ

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

Однако, если вы должны сделать это, осознайте, что вы собираетесь нарушить MVVM - используя DependencyObject Внутри ViewModel, по самой своей природе, внедряются определенные элементы каркаса представления в виртуальную машину. Как только вы решите, что все в порядке, вы всегда можете сделать так, чтобы ваш ViewModel представлял DependencyObject в качестве свойства и связывал его с DependencyProperty, определенным в этом DependencyObject, а не непосредственно со свойством вашей виртуальной машины.

Другие вопросы по тегам