2009-09-09 39 views
1

我有一个父视图,它定义了Xaml中的子视图。子视图具有绑定到父视图的ViewModel的DependencyProperty。但是,该视图的ViewModel也需要该值。WPF MVVM和依赖属性嵌套视图

<custom:Parent> 
    <custom:Child ChildId="{Binding ParentFooId}" ... /> 
</custom:Parent> 

ChildId被实现为ChildView控制的依赖特性。如果ChildViewModel需要ParentFooId,那么获得它的适当MVVM方法是什么?

我不想给ChildViewDataContext铸造成一个ChildViewModel和设定值在OnChildIdChanged处理程序ChildView的。这对我来说似乎不是MVVM。

我想的另一替代方法是创建一个新的ChildViewModel用值并将其设置为在OnParentFooIdChanged事件DataContext(在ParentViewModel);但是这看起来不太正确,因为ViewModel应该对视图不知情(因此对DataContext s没有任何认识)。

好像我失去了一些东西明显...

回答

3

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

+0

所以孩子的视图模型将有一个“父”属性包含父母的视图模型...嗯。我认为这会起作用......我认为这可能是我明显缺少的东西。 – SergioL 2009-11-09 15:04:59

0

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