我有以下课程:
主窗口:
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使我能够设置所有者。不过,我无法达到这个方法。
答案 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);
}
但是我认为你最好不要使用事件,而不是将你的窗口对象传递给它的孩子。