2013-03-07 59 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