我有以下类:
主窗口:
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
-方法从主窗口。主菜单和用户页是主窗口的子窗口。问题是,无论我尝试什么,我都无法达到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 '在那里是未知的。
我做错了什么?我该如何解决这个问题?
编辑:将主菜单更改为窗口而不是UserControl使我能够设置所有者。真乱!)试试这个
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);
}
然而,我认为你会更好地使用事件,而不是传递你的窗口对象的孩子。