将值从一个视图模型传递到子视图模型

时间:2014-12-31 03:14:19

标签: c# wpf mvvm

我正在使用.Net FW 4.5,VS 2013和SQLITE。我有一个" MainWindow"包含标签项。每个标签项都有自己的视图,每个视图都有自己的VM。我在MainWindow上运行一个查询,将数据返回到数据网格。取决于" SelectedItem"被选中我需要我的查询将相关的子数据返回到我的选项卡,其中包含我的视图/ viewmodel ...如何让我的主VM将值传递给我的子VM ...我已经尝试过&# 34; FindVisualParent"但它不起作用。我认为它在加载完所有内容后加载我的值,因此不会在我的子VM查询中应用我的文件管理器......希望这是有道理的。

适用于MVVM的最佳方法将不胜感激。 Download Sample Code

2 个答案:

答案 0 :(得分:0)

我没有看到任何代码的最佳猜测是您的视图拥有(实例化)各自的视图模型。这可以解释为什么使用FindVisualParent来获取其他视图模型。尝试让主视图模型实例化您的子视图模型。

答案 1 :(得分:0)

如上所述,您的视图模型应该为每个子视图模型实例化,并将对它们的引用保存为属性。然后可以将Tab的数据上下文分配给主窗口视图模型中的视图模型属性。

这使您的父视图模型可以在子视图模型中注册更改通知,并让您更好地控制它们的交互方式。