2011-10-21 24 views
1

これはWPF/C#アプリケーションであり、コードの問題よりも多くの設計上の問題があります。Window_Closedイベントをトリガーせずにウィンドウを閉じる

私は、ウィンドウから派生したクラスを実装する5つの別々の* .xamlファイルを持っています。だから、5つのウィンドウ。これはウィザードタイプのアプリケーションで、各ウィンドウには新しいウィンドウを作成し、それを隠し、新しいウィンドウを表示する戻る/次のボタンがあります。

時々私は窓をスキップする、または最初のウィンドウに戻りますので、これは新しいウィンドウが開かれるたびなど、(私はページを使用していない)純粋に

ベースのナビゲーションではありません親ウィンドウは新しいウィンドウの所有者として自身を設定し、自身を隠します。戻るボタンを使用すると、新しいウィンドウに所有者が表示され、閉じます。これは、ナビゲーションのために正常に動作します。

ナビゲーションを使用するのではなく、実際にウィンドウを閉じるときに問題が発生します。彼らがウィンドウを閉じると、Alt-F4、Xなどを押すとアプリケーション全体が閉じるはずです。

私の「戻る」ボタンはウィンドウを閉じます。ウィンドウが閉じると、ウィンドウが閉じられ、アプリケーション全体が終了します。

私は、ユーザーがウィンドウを閉じたときにアプリケーション全体を閉じる方法を考えていますが、ウィンドウを閉じて(実際にはそれを隠さず、実際には破棄しないで)、クリックしたときにその所有者を表示します。私は前者を引き起こさずに後者をやっているようには見えない。

提案がありますか?私はちょうどこれについて正しい考え方を考えていません。

答えて

2

Windows間で切り替えるのではなく、パネルのUserControlsを切り替えることをお勧めします。あなたは、開いている/閉じた状態について心配する必要がないことを除いて、ウィンドウの全機能を持っています。 Next/Previousコマンドに基づいて、UserControlsの表示を切り替えます。

ウィザードのナビゲーションを検討することを検討することがあります。これはWPFでdemonstrated hereとして行うことができます。

ナビゲーションでは、ページをホストする1つのウィンドウがあります。コマンドを発行して特定のページに移動すると、コントロールの可視性について心配することなくページに自動的に移動します。

+0

ナビゲーションを使用して調べ、実際にその特定の動画を見ました。それは本当に私が望むものではありません。 Webページのナビゲーションが増え、ページ間を移動することができます。私は、それぞれの場合に「戻る」と「次の」が何をすべきかという非常に具体的なルールを持っています。コンテキストに応じてページをスキップしたり、コードを実行することがあります。 私は自分の5つのウィンドウのそれぞれにusercontrolsを使用しています。これは本質的に1つ以上のユーザーコントロールですので、検討する価値があります。バック/ロウのロジックをウィンドウの外に移動する必要がありますが、それはその価値があるかもしれません。 – Eric

+0

@ user783106 - はい、バック/ポップをメインウィンドウに入れ、ホステッドコントロール。 Back/Nextをクリックすると、次のUserControlを選択するルールを使用できます。ナビゲーションを使用したくない場合は、自分で視界を切り替えるだけです。 –

+0

しかし、ちょっとしたことに、ナビゲーションでルールを使うことができます。 NavigateTo( "string name of page")というメソッドがあります。ボタンをクリックすると、コードビハインドで次のページを決定するために必要なロジックを実行します。表示する準備ができたら、次のページの名前を渡すNavigateTo()を呼び出します(必要に応じて完全に動的になります)。 –

1

まず、5つの異なるウィンドウを作成するのではなく、1つのウィンドウを作成し、ウィザードページが変更されたときにその内容を置き換えます。これはユーザーにとってより自然に見え、問題はまったく現れません。

第2に、複数のウィンドウを持つデザインを主張する場合、私はクローズボタンのクリックハンドラから退会するだけです(ウィンドウを開いたときに再登録する)。

+0

ユーザーの観点からは、5つの異なるウィンドウがあることはわかりません。位置とサイズは同じです。私はあなたのポイントを参照してください。 閉じるボタンのクリックハンドラからの登録を解除する例がありますか? alt-f4のようにウィンドウを閉じる他の方法もあります。私の後ろボタンで閉じている場合には、ウィンドウのクローズイベントとハンドラとの関連付けを解除することを提案していますか?それは私が考えると意味するだろう – Eric

関連する問題