C# WPF MVVM和具有依赖属性的嵌套视图
我有一个在Xaml中定义子视图的父视图。子视图具有绑定到父视图的ViewModel的C# WPF MVVM和具有依赖属性的嵌套视图,c#,wpf,data-binding,mvvm,dependency-properties,C#,Wpf,Data Binding,Mvvm,Dependency Properties,我有一个在Xaml中定义子视图的父视图。子视图具有绑定到父视图的ViewModel的DependencyProperty。但是,子视图的ViewModel也需要该值 <custom:Parent> <custom:Child ChildId="{Binding ParentFooId}" ... /> </custom:Parent> ChildId作为ChildView控件的依赖属性实现。如果ChildViewModel需要ParentFooId,
DependencyProperty
。但是,子视图的ViewModel也需要该值
<custom:Parent>
<custom:Child ChildId="{Binding ParentFooId}" ... />
</custom:Parent>
ChildId
作为ChildView
控件的依赖属性实现。如果ChildViewModel
需要ParentFooId
,那么获得它的正确MVVM方法是什么
我不想将ChildView
的DataContext
强制转换为ChildViewModel
并在ChildView
的onchildicchanged
处理程序中设置值。对我来说,这似乎不太有意思
我想到的另一种选择是使用该值创建一个新的ChildViewModel
,并将其设置为OnParentFooIdChanged
事件(在ParentViewModel
中)中的DataContext
;但这似乎也不太正确,因为ViewModels应该对视图不感兴趣(因此对DataContext
s一无所知)
似乎我遗漏了一些明显的东西…如果您只是尝试将数据从依赖项属性传递到视图模型,我将使用PropertyChangedCallback事件。添加将更改的数据发送到视图模型的处理程序。不过,我可能误解了您的意图。如果我正确理解了这个问题,您只需要在父视图模型中创建子视图模型,传递并保留对父视图模型的引用。这样,您可以从子视图模型中引用父视图模型的任何属性,并绑定到子视图中的任一属性。因此子视图模型将具有包含父视图模型的“父”属性…嗯。我想那会有用的…我想这可能是我明显遗漏的东西。