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