c# - WPF MVVM 和具有依赖属性的嵌套 View

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

我有一个在 Xaml 中定义 subview 的父 View 。 subview 有一个 DependencyProperty绑定(bind)到父 View 的 ViewModel。但是, subview 的 ViewModel 也需要该值。

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

ChildId作为 ChildView 的依赖属性实现控制。如果ChildViewModel需求ParentFooId ,获得它的正确 MVVM 方式是什么?

我不想投 DataContextChildView进入ChildViewModel并在 OnChildIdChanged 中设置值ChildView 的处理程序.这对我来说似乎不太像 MVVM。

我想到的另一种选择是创建一个新的 ChildViewModel使用该值并将其设置为 DataContextOnParentFooIdChanged事件(在 ParentViewModel 中);但这似乎也不完全正确,因为 ViewModel 应该忽略 View (因此对 DataContext s 一无所知)。

似乎我遗漏了一些明显的东西......

最佳答案

如果我正确理解了这个问题,您只需要在父 View 模型中创建 subview 模型,传递并保留对父 View 模型的引用。这样您就可以从 subview 模型中引用父 View 模型的任何属性,并绑定(bind)到 subview 中的任何一个。

关于c# - WPF MVVM 和具有依赖属性的嵌套 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1400226/

相关文章:

c# - 使用 WPF 绘制 3D 线

c# MVVM在选择组合框后更新Datagrid

c# - 使用绑定(bind)的 UI 反馈边框

c# - 在 WPF ListView c# 窗口中更改外观行

c# - 如何将 SqlDateTime 值转换为 .Net::DateTime

c# - 将对象列表保存到 XML 文件并使用 C# 加载该列表的最佳方法是什么?

c# - 在 WPF 中渲染清晰的线条

c# - 阿瓦隆码头 2.0 : adding LayoutDocument not working after Deserialize layout

javascript - AngularJS:数据绑定(bind)和点表示法

c# - 反序列化大量 XML 文档时忽略空引用