WPF MVVM和具有依赖项属性的嵌套视图
-
05-07-2019 - |
题
我有一个父视图,用于在Xaml中定义子视图。子视图有一个 DependencyProperty
,它绑定到父视图的ViewModel。但是,子视图的ViewModel也需要该值。
<custom:Parent>
<custom:Child ChildId="{Binding ParentFooId}" ... />
</custom:Parent>
ChildId
是作为 ChildView
控件的依赖属性实现的。如果 ChildViewModel
需要 ParentFooId
,那么获取它的正确方法是什么?
我不想将 ChildView
的 DataContext
转换为 ChildViewModel
,并在 OnChildIdChanged中设置值代码>
ChildView
的处理程序。这对我来说似乎不是MVVM。
我想到的另一个选择是使用值创建一个新的 ChildViewModel
,并将其设置为 OnParentFooIdChanged
事件中的 DataContext
(在 ParentViewModel
);但这似乎也不对,因为ViewModel应该忽略View(因此对 DataContext
s一无所知)。
好像我错过了一些明显的东西......
解决方案
如果我正确理解了这个问题,你只需要在父视图模型中创建子视图模型,传递并保持对父视图模型的引用。这样,您可以从子视图模型引用父视图模型的任何属性,并绑定到子视图中。
其他提示
如果您只是尝试将数据从依赖项属性传递到视图模型,我将使用PropertyChangedCallback事件。添加一个处理程序,将更改的数据发送到View Model。我可能会误解你的意图。
不隶属于 StackOverflow