Wpf 我可以从其他模型继承MVVM模型吗?

Wpf 我可以从其他模型继承MVVM模型吗?,wpf,data-binding,mvvm,Wpf,Data Binding,Mvvm,我有一个ProductViewModel类,它包含不同的属性。 然后我有一个ProductDetailsViewModel类,它继承自ProducViewModel类。我这样做的原因是为了获得正确的绑定环境,避免重复前面视图中的属性 我可以这样做,还是每个ViewModel都应该被清楚地隔离 通过代码,我可以从ProductDetailsViewModel视图访问ProductViewModel类的属性,但当我将ProductDetailView的datacontext设置为ProducDeta

我有一个ProductViewModel类,它包含不同的属性。 然后我有一个ProductDetailsViewModel类,它继承自ProducViewModel类。我这样做的原因是为了获得正确的绑定环境,避免重复前面视图中的属性

我可以这样做,还是每个ViewModel都应该被清楚地隔离

通过代码,我可以从ProductDetailsViewModel视图访问ProductViewModel类的属性,但当我将ProductDetailView的datacontext设置为ProducDetailsViewModel类并绑定继承类中定义的实例的属性URI时,绑定似乎不会发生


有什么想法吗?

您也可以这样做,但我认为最好将它们分开并使用依赖注入

您为ProductViewModel创建接口并实现它,然后将其注入ProductDetailsViewModel


是的,这很好,我在我的WPF项目中一直都这样做,所以它应该可以正常工作。一些建议:

  • 调试应用程序时是否可以检查输出窗口。是否存在任何绑定错误,表明xaml绑定类型错误
  • 您是否在xaml中使用绑定到特定类型的任何数据模板,例如ProductViewModel而不是ProductDetailsViewModel
  • 基类型(ProductViewModel)是否实现INotifyPropertyChanged
  • ProductViewModel和ProductSetailsViewModel中的所有属性是否都使用直接键入的字符串属性名称引发PropertyChanged事件

致以最诚挚的问候,

是的,我在执行此操作时会遇到绑定错误,因为DataContext似乎位置不正确。有关更好的详细信息,我在此处发布:您的绑定失败,因为您的用户控件没有“vm:ProductViewModel”的祖先。UserControls祖先是其在可视树中的父级,因此您应该在DataContext设置为ProductViewModel的树中查找更高的祖先。正如BigL正确指出的,这一行可能导致您的问题:。顺便提一下,您听说过名为Snoop(snoopwpf.codeplex.com)的WPF工具吗?我强烈建议学习使用它来调试WPF中的绑定和可视化树问题。这是我所期望的,但我认为祖先一直在查找树,直到在中找到正确的类型,而事实似乎并非如此。我如何在这里指定,以便告诉它查找,直到找到它?嗯,你有样本吗,从来没有这样做过,并与那些依赖注入工作现在我没有一个样本,但谷歌也是你的朋友,有很多例子可以学习。您可以手动执行DI,也可以使用框架执行DI。Unity Prism很乐意看一看,但首先我认为它们有点复杂,难以理解。