2010-07-20 112 views
0

我想从另一个窗口隐藏窗口MainWindow。我认为下面的代码会起作用,直到我意识到它会创建另一个MainWindow实例,然后隐藏它,而不是原始窗口!WPF无法隐藏另一个窗口

MainWindow MainWindow = new MainWindow(); 
MainWindow.Hide(); 

然后我试图只用MainWindow.Hide(),但那是行不通的。我该怎么做?

回答

1

您需要获取您试图隐藏的窗口的实际实例。如果(通过名字猜测),这是你的主窗口,你可以尝试:

Application.Current.MainWindow.Hide(); 

否则,你需要让你想隐藏窗口的具体实例的一些手段。

+0

我只是想'CBR.MainWindow.Hide()'(CBR是应用程序的名称),并有大量的属性对于'CBR.MainWindow',但是没有函数,比如'Hide()'或'Close()'。在启动时创建窗口时甚至可以找到窗口的实例吗?因为它是您启动应用程序时打开的第一个窗口。 – 2010-07-20 18:50:53

+0

@Joel:你不能使用类型(MainWindow) - 只会显示静态方法。我的建议是使用Application.MainWindow属性。如果您试图隐藏的窗口是启动时的主应用程序窗口,这将起作用。请参阅:http://msdn.microsoft.com/en-us/library/system.windows.application.mainwindow.aspx – 2010-07-20 18:52:03

+0

@ Reed:啊,我明白了,对不起,我误解了。虽然我仍然有问题。我跟着你的链接,并使用代码'Window mainWindow = this.MainWindow',然后在下一行使用'mainWindow.Hide()',它似乎认识到'mainWindow'是一个窗口,并给了我选项把它藏起来。当我运行该程序时,出现错误“CBR.ErrorReportingForm不包含'MainWindow'的定义,并且没有找到接受'CBR.ErrorReportingForm'类型的第一个参数的扩展方法'MainWindow'使用指令还是程序集引用?“ – 2010-07-20 19:28:28

1

如果你想要做的隐藏窗口从主窗口打开:

//Main Window 
private void OpenChildWindow() 
{ 
    ChildWindow child = new ChildWindow(); 
    child.Show(); 
    child.Owner = this; 

} 

//Child Window 
private void CloseMainWindow() 
{ 
    ((Window)Parent).Hide(); 
}