Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用datacontext从另一个窗口调用方法_C#_Wpf_Windows - Fatal编程技术网

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

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

我有一个应用程序使用两个单独的窗口,我需要从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交互。您可以使用的最佳方法是实现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的内容,我现在还不知道,但对于我的问题,我已经用另一种方式解决了。