0

私のアプリケーションは、多くのウィンドウを連続してジャンプする必要があるような性質のものです。メニューウィンドウから(選択範囲から)別のウィンドウを開き、メニューウィンドウを無効にするか閉じる必要があります。

私が現在使用しているのはwindow.showで、次にthis.close()メソッドを使用してメニューウィンドウを閉じます。

元:

    private void MainMenuControl_Link1MouseDown(object sender, RoutedEventArgs e)
    {

        // Utilities
        UtilitiesMenyWindow UtilitiesMenyWindow = new UtilitiesMenyWindow(); // Assign Variable to window
        UtilitiesMenyWindow.Show(); // Open window
        this.Close(); // close current window

    }

次に、新しいウィンドウ内から、同じ方法を使用してMainMenuウィンドウを再度開きます。

    private void Utilities_Link3MouseDown(object sender, RoutedEventArgs e)
    {
        // Return to Main
        MainMenuWindow MainMenu = new MainMenuWindow(); // Assign Variable to window
        MainMenu.Show(); // Open Main window
        this.Close(); // close login window
    }

次に、静的変数を含むパブリック変数クラスを保持して、すべてのウィンドウに共通するすべての変数を格納します。

1つの障害を除いて、これはすべて正常に機能しています。(MainWindowではなく)別のウィンドウからUtilitiesMenyWindowを呼び出すと、開いたウィンドウではなくMainMenuに戻ります。

セカンダリウィンドウを開いたウィンドウに戻るために、それ自体を閉じて特定のウィンドウを開くように指示する必要がない、より簡単で一般的な方法はありますか(この場合、メインメニューに「ハードコード」されています)(明らかに、最初に開いてから閉じます)

Unloadedイベントを見ていましたが、このイベントが発生するまで元のウィンドウを非表示のままにして、そこに座ってループで待機する必要がないようにするにはどうすればよいですか。これはお勧めできません。たぶん誰かが、イベントハンドラーを「起動」して前のウィンドウをアクティブにする自動イベントとして設定する方法を教えてくれますか?

4

2 に答える 2

0

ウィンドウを閉じるのではなく、非表示にすることを検討できます。そうすれば、新しいウィンドウを作成するたびに、呼び出し元のウィンドウへの参照を渡すことができます。

すなわち

UtilitiesMenyWindow UtilitiesMenyWindow = new UtilitiesMenyWindow();
UtilitiesMenyWindow.CallingWindow = this;
UtilitiesMenyWindow.Show();
this.Hide();

次に、新しいウィンドウを閉じて戻りたい場合:

this.Hide();
this.CallingWindow.Show();
于 2012-07-06T09:38:19.647 に答える
0

元のウィンドウを閉じることができます - すべてのウィンドウはおそらく Window クラスから継承されているため、現在のウィンドウをユーティリティ メニューの「ウィンドウ」型の変数に保存する必要があります。

このようにして、あなたがしていることを続けることができます:

例えば

private void MainMenuControl_Link1MouseDown(object sender, RoutedEventArgs e) 
{ 

    // Utilities 
    UtilitiesMenyWindow UtilitiesMenyWindow = new UtilitiesMenyWindow(); // Assign Variable to window 
    UtilitiesMenyWindow.ReturnWindow = this;
    UtilitiesMenyWindow.Show(); // Open window 
    this.Hide(); // hide current window 

} 

そして追加

Window _returnWindow;

あなたのユーティリティウィンドウクラスで

次に、close メソッドのそのクラスで、元のウィンドウ タイプを呼び出すことができます。

private void Utilities_Link3MouseDown(object sender, RoutedEventArgs e)
{
    // Return to original
    _returnWindow.Show();
    this.Close(); // close login window
}

もちろん、これは元のウィンドウを強制終了しないことを前提としています

于 2012-07-06T09:39:07.017 に答える