ViewModel应该继承WPF中的DependencyObject吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ViewModel应该继承WPF中的DependencyObject吗?相关的知识,希望对你有一定的参考价值。

我试图使用MVVM在WPF中创建一个简单的UserControl。现在,我需要为UserControl创建一个依赖项属性,因此我尝试在UserControlViewModel中创建依赖项属性(我不想被隐藏在代码的后面)。

为了在UserControlViewModel中创建依赖项属性,我需要从DependencyObject继承。在DependencyObject中继承UserControlViewModel是一种好习惯吗?也就是说,这是遵循MVVM设计UserControl的好方法吗?

答案

如果您创建的自定义控件具有希望它们为[[可绑定的属性(例如,以下代码),则不能使用INotifyPropertyChanged,并且必须使用[C0 ]。

DependencyObject
但是使用<MyUserControl MyDependencyProperty="Binding PropertyPath"  />
时应记住:

    DependencyObjects未标记为可序列化。
  1. DependencyObjects类覆盖并密封DependencyObjectEquals()方法。
  2. A GetHashCode()具有线程相似性-它只能在创建它的线程上访问。

    • 要查看一个很好的MVVM示例,该示例讨论了View-Model中INPC和DP的实现,请参见此DependencyObject
    • 有关INPC与DP辩论的更多信息,请阅读article

以上是关于ViewModel应该继承WPF中的DependencyObject吗?的主要内容,如果未能解决你的问题,请参考以下文章

WPF 中的 MVVM - 如何提醒 ViewModel 模型中的变化......或者我应该吗?

WPF---MVVM初尝试

如何从继承的用户控件访问 viewModel 依赖属性?

如何从 ViewModel 一次清除 WPF 中的所有控件?

ViewModel 孩子没有正确刷新? WPF中的绑定

如何在没有代码隐藏的情况下处理 ViewModel 中的 WPF 路由命令?