从其他窗口更改主窗口的可见性



对不起,我的问题很愚蠢,但是我不能让它工作。

我有一个主窗口,打开另一个窗口。

public static Window2 LoadWindow = new Window2();
public MainWindow()
{
InitializeComponent();
LoadWindow.Show();
在后面的代码中,我启动了一个函数,该函数在新窗口 中创建一个后台工作器。
if (MainWindow.Start == true)
{
MainWindow.LoadWindow.LoadImage(null, null);
MainWindow.Start = false;
}
public void LoadImage(object sender, RoutedEventArgs e)
{
worker = new BackgroundWorker();
...

然后我试着改变主窗口的可见性。

private void worker_Completed(object sender, RunWorkerCompletedEventArgs e)
{
Application.Current.Dispatcher.Invoke(new Action(() => {
Application.Current.MainWindow.Visibility = Visibility.Visible;
}));

}

我以为Application.Current.MainWindow会指向我的主窗口,但是调试器说Window2是Current.MainWindow。

实际上,我对主窗口完全困惑了。通常我用一个名字初始化一个类,然后用那个名字使用它。(例如,Window2=class, LoadWindow=它的名称)但是主窗口的名称是什么,或者我如何从另一个窗口与它交互。当MainWindow = MainWindow>.<.

您可以在构造函数中创建LoadWindow时注入对MainWindow的引用,或者您可以使用Application.Current.Windows集合获得对MainWindow的引用:

var mainWindow = Application.Current.Windows.OfType<MainWindow>().FirstOrDefault();
if (mainWindow != null)
mainWindow.Visibility = Visibility.Visible;

最新更新