MainWindow的WPF调用方法不起作用

时间:2013-03-07 10:53:39

标签: c# wpf visual-studio-2010 xaml

我有以下课程:

主窗口:

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());
    }

如您所见,我正在尝试使用MainWindow中的LoadAPage - 方法。 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更改为Window而不是UserControl使我能够设置所有者。不过,我无法达到这个方法。

1 个答案:

答案 0 :(得分: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);
}

但是我认为你最好不要使用事件,而不是将你的窗口对象传递给它的孩子。