使用数据上下文从另一个窗口调用方法

本文关键字:窗口 调用 方法 另一个 数据 上下文 | 更新日期: 2023-09-27 18:01:36

我有一个使用两个单独窗口的应用程序,我需要从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();

无论如何"myClass"是null和myClass. mymethod()崩溃…我该怎么办?还有别的办法解决我的问题吗?

使用数据上下文从另一个窗口调用方法

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

这里有一篇论文可供阅读:VM的交互

在我的一个项目中,我有一个非常类似的问题,并通过事件实现了它,这很糟糕,我不喜欢这种方法,因为它很难设置,很难测试和维护,所以我强烈建议你理解和实现某种中介

解决方法:

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