我有一个在 Xaml 中定义 subview 的父 View 。 subview 有一个 DependencyProperty
绑定(bind)到父 View 的 ViewModel。但是, subview 的 ViewModel 也需要该值。
<custom:Parent>
<custom:Child ChildId="{Binding ParentFooId}" ... />
</custom:Parent>
ChildId
作为 ChildView
的依赖属性实现控制。如果ChildViewModel
需求ParentFooId
,获得它的正确 MVVM 方式是什么?
我不想投 DataContext
的 ChildView
进入ChildViewModel
并在 OnChildIdChanged
中设置值ChildView
的处理程序.这对我来说似乎不太像 MVVM。
我想到的另一种选择是创建一个新的 ChildViewModel
使用该值并将其设置为 DataContext
在OnParentFooIdChanged
事件(在 ParentViewModel
中);但这似乎也不完全正确,因为 ViewModel 应该忽略 View (因此对 DataContext
s 一无所知)。
似乎我遗漏了一些明显的东西......
最佳答案
如果我正确理解了这个问题,您只需要在父 View 模型中创建 subview 模型,传递并保留对父 View 模型的引用。这样您就可以从 subview 模型中引用父 View 模型的任何属性,并绑定(bind)到 subview 中的任何一个。
关于c# - WPF MVVM 和具有依赖属性的嵌套 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1400226/