【问题标题】:WPF MVVM and nested Views with dependency propertiesWPF MVVM 和具有依赖属性的嵌套视图
【发布时间】:2009-09-09 14:52:44
【问题描述】:

我有一个在 Xaml 中定义子视图的父视图。子视图有一个绑定到父视图的 ViewModel 的DependencyProperty。但是,子视图的 ViewModel 也需要该值。

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

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

我不想将 ChildViewDataContext 转换为 ChildViewModel 并在 ChildViewOnChildIdChanged 处理程序中设置值。对我来说,这似乎不太像 MVVM。

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

我好像遗漏了一些明显的东西......

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 因此子视图模型将具有包含父视图模型的“父”属性...嗯。我认为这会起作用......我认为这可能是我明显遗漏的东西。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多