WPF MVVM和具有依赖项属性的嵌套视图

时间:2009-09-09 14:52:45

标签: c# wpf data-binding mvvm dependency-properties

我有一个父视图,用于在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事件中的ChildViewModelDataContext);但这似乎也不正确,因为ViewModel应该忽略View(因此对OnParentFooIdChanged s一无所知)。

好像我错过了一些明显的东西......

2 个答案:

答案 0 :(得分:3)

如果我正确理解了这个问题,你只需要在父视图模型中创建子视图模型,传递并保持对父视图模型的引用。这样,您可以从子视图模型引用父视图模型的任何属性,并绑定到子视图中。

答案 1 :(得分:0)

如果您只是尝试将数据从依赖项属性传递到视图模型,我将使用PropertyChangedCallback事件。添加一个处理程序,将更改的数据发送到View Model。我可能会误解你的意图。