WPF中MainWindow與Page通訊
阿新 • • 發佈:2018-12-25
與WinForm不同,WPF拋棄了MDIwindow的概念,因為微軟的工程師們相信主視窗加可以切換的Page,也就象是標籤頁似的結構,才更符合人們使用的習慣。剛好前一階段需要設計一個軟體介面,需要實現不同功能介面的切換功能,我用了MainWindow->Frame->Page的結構,在主視窗中添加了一個Frame,通過Frame的Content方法來顯示各種不同的功能介面(Page),那麼問題來了,如果Page中有一個按鈕,該按鈕用來呼叫主視窗的一個方法,該怎麼辦?舉一個最簡單的例子:Frame中有個Page是用來輸入帳號密碼的,輸入帳號密碼後點擊確定,Frame顯示另一個Page,實現過程如下:
1、新建一個WPF工程,UI如下
中間的方框是frame1
2、新增Page1
3、在Page的cs檔案中新增如下程式碼
MainWindow parentWindow;
public MainWindow ParentWindow
{
get { return parentWindow; }
set { parentWindow = value; }
}
4、在mainwindow中用frame1.content顯示page,而不是用this.frame1.Navigate
public MainWindow()
{
InitializeComponent();
Page1 page1 = new Page1();
page1.ParentWindow = this;
}
5、這樣,就將Page的parentwindow設定為mainwindow,從而可以用 this.parentWindow來呼叫父視窗,也就是裝視窗(mainwindow)中的變數和方法了。