C# 使用datacontext从另一个窗口调用方法
我有一个应用程序使用两个单独的窗口,我需要从Window2调用Window1中的方法。Window1有一个加载不同类的框架。当加载特定类时,我需要从Window2运行此类中的方法(因此我必须运行的方法不在MainWindow类中,而是在MainWindow框架加载的类中)。在Window2中使用此代码,我可以看到我要调用的方法:C# 使用datacontext从另一个窗口调用方法,c#,wpf,windows,C#,Wpf,Windows,我有一个应用程序使用两个单独的窗口,我需要从Window2调用Window1中的方法。Window1有一个加载不同类的框架。当加载特定类时,我需要从Window2运行此类中的方法(因此我必须运行的方法不在MainWindow类中,而是在MainWindow框架加载的类中)。在Window2中使用此代码,我可以看到我要调用的方法: Application curApp = Application.Current; var mainWnd = curApp.MainWindow as MainWin
Application curApp = Application.Current;
var mainWnd = curApp.MainWindow as MainWindow;
var myClass = mainWnd.DataContext as Page2Class;
myClass.MyMethod();
无论如何,“myClass”为null,myClass.MyMethod()崩溃。。。我该怎么办?还有另一种方法可以解决我的问题吗?嗯,我认为这对应于ViewModels交互。您可以使用的最佳方法是实现mediator来耦合VM 下面是一篇文章: 在我的一个项目中,我遇到了一个非常类似的问题,并通过事件实施了它,这很糟糕,我不喜欢这种方法,因为它很难设置,也很难测试和维护,所以我强烈建议您理解并实施某种中介,以这种方式解决:
Application curApp = Application.Current;
var mainWnd = curApp.MainWindow as MainWindow;
var content = mainWnd._mainFrame.Content as SlotMachine;
content.MyMethod();
您在哪里设置
DataContext
?现在,它是空的是绝对正常的。似乎mainWnd.DataContext不是Page2Class,这个DataContext是什么?你能告诉我如何将mainWindow DataContext分配给Page2Class吗?谢谢,我会读到关于mediator的内容,我现在还不知道,但对于我的问题,我已经用另一种方式解决了。