1. 程式人生 > >WPF中MainWindow與Page通訊

WPF中MainWindow與Page通訊

與WinForm不同,WPF拋棄了MDIwindow的概念,因為微軟的工程師們相信主視窗加可以切換的Page,也就象是標籤頁似的結構,才更符合人們使用的習慣。剛好前一階段需要設計一個軟體介面,需要實現不同功能介面的切換功能,我用了MainWindow->Frame->Page的結構,在主視窗中添加了一個Frame,通過Frame的Content方法來顯示各種不同的功能介面(Page),那麼問題來了,如果Page中有一個按鈕,該按鈕用來呼叫主視窗的一個方法,該怎麼辦?舉一個最簡單的例子:Frame中有個Page是用來輸入帳號密碼的,輸入帳號密碼後點擊確定,Frame顯示另一個Page,實現過程如下:
1、新建一個WPF工程,UI如下


中間的方框是frame1
中間的方框是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)中的變數和方法了。