2010-07-20 122 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(); 
}