2013-03-07 60 views
1

我有以下類別:WPF調用方法不工作

主窗口:

public partial class MainWindow : Window 
{ 

    public MainWindow() 
    { 
     InitializeComponent(); 
     MainMenu mainMenu = new MainMenu(this); 
     menuFrame.Navigate(mainMenu); 
     UserPage userP = new UserPage(); 
     contentFrame.Navigate(userP); 
    } 

    public void LoadAPage(Page page) 
    { 
     contentFrame.Navigate(page); 
    } 
} 

的MainMenu:

public partial class MainMenu : Window 
{ 
    private Window switchPage; 

    public MainMenu(MainWindow mainP) 
    { 
     Window mainWindow = mainP; 
     InitializeComponent(); 
     switchPage = mainP; 
    } 

    private void btn_navigate_user(object sender, EventArgs e) 
    { 
     UserPage userP = new UserPage(ServiceLogic); 

     //switchPage = Window.GetWindow(PageSwitcher); 
     //switchPage.LoadAPage(new UserPage()); 
    } 

正如你所看到的,我嘗試使用LoadAPage - MainWindow中的方法。 MainMenu和UserPage是MainWindow的孩子。問題是,無論我嘗試什麼,我都無法達到LoadAPage方法。我嘗試設置所有者,但這不起作用。在嘗試mainMenu.Owner = this;時,Visual Studio說Mainmenu does not contain a definition for 'Owner``. When I give the parent class as a parameter to the child class, there are no errors but the method LoadAPage`在那裏是未知的。

我在做什麼錯?我應該如何解決這個問題?

編輯:將MainMenu更改爲一個窗口而不是UserControl使我能夠設置所有者。不過,我無法達到這個方法。

回答

2

什麼亂七八糟的:)試試這個

private MainWindow switchPage; 

public MainMenu(MainWindow mainP) 
{ 
    InitializeComponent(); 
    switchPage = mainP; 
} 

private void btn_navigate_user(object sender, EventArgs e) 
{ 
    UserPage userP = new UserPage(ServiceLogic); 
    switchPage.LoadAPage(userP); 
} 

但是我認爲你會使用,而不是通過你的窗口對象爲它的子活動,會更好。

+0

是的,我一直在爭分奪秒地完成這個過程,超過10分鐘,4小時前開始。將其更改爲「MainWindow」取得了訣竅,現在全部正常工作。這不是最好的事情,但考慮到我沒有什麼經驗,我必須在(現在4分鐘)演示一個演示,現在看起來我很開心!你救了我! <3 – Joetjah 2013-03-07 11:27:11