使用datacontext从另一个窗口调用方法

时间:2014-05-05 07:37:32

标签: c# wpf windows

我有一个使用两个独立窗口的应用程序,我需要从Window2调用Window1中的一个方法。 Window1有一个加载不同类的框架。当一个特定的类被加载时,我需要从Window2运行这个类中的方法(所以我必须运行的方法不是在MainWindow类中,而是在MainWindow框架加载的类中),使用这个在Window2中的代码我可以看到我想调用的方法:

Application curApp = Application.Current;
var mainWnd = curApp.MainWindow as MainWindow;   
var myClass = mainWnd.DataContext as Page2Class;
myClass.MyMethod();

AnyWay" myClass"是null并且myClass.MyMethod()崩溃......我怎么办?还有另一种方法可以解决我的问题吗?

2 个答案:

答案 0 :(得分:0)

嗯,我认为这与ViewModels交互相对应。您可以使用的最佳方法是实现中介来耦合您的VM。

以下是一篇文章:VM's Interaction

在我的一个项目中,我有一个非常相似的问题,并用事件实现它,它很糟糕,我不喜欢这种方法,因为它很难设置,很难测试和维护,所以我高度推荐你了解并实施某种调解员

答案 1 :(得分:0)

以这种方式解决:

Application curApp = Application.Current;
var mainWnd = curApp.MainWindow as MainWindow;   
var content = mainWnd._mainFrame.Content as SlotMachine;
 content.MyMethod();