1

私は次のクラスを持っています:

メインウィンドウ:

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

メインメニュー:

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-methodを使用しようとしています。MainMenuとUserPageは、MainWindowの子です。問題は、何をしようとしても、そのLoadAPage方法に到達できないことです。所有者を設定しようとしましたが、機能しません。試してみるとmainMenu.Owner = this;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 methodVisualStudioはLoadAPage`が不明であると言います。

私は何が間違っているのですか?これをどのように解決すればよいですか?

編集:MainMenuをUserControlではなくWindowに変更すると、所有者を設定できるようになります。それでも、私はその方法にたどり着くことができません。

4

1 に答える 1

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

ただし、ウィンドウ オブジェクトをその子オブジェクトに渡すのではなく、イベントを使用する方がよいと思います。

于 2013-03-07T11:14:30.430 に答える