我有一个父视图,用于在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。我可能会误解你的意图。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top