WPF フレームが履歴をスタックに保存しないようにする
-
21-09-2019 - |
質問
これは簡単な解決策のように思えますが、これを理解するのに多くの時間を無駄にしています。おそらくアプリケーションの設計が間違っている可能性があります (実際にそうなる可能性があります)。より良い解決策があれば助けてください。
私は、Outlook によく似たエンタープライズ レベルの WPF アプリケーションを設計しています。 Ribbon
ツールバーの代わりに。ユーザーがフレームをクリックしたときにフレームにロードされるさまざまなモジュールがたくさんあります。 RibbonButton
. 。彼のリボンはすべてのモジュールで共有されることに注意してください。
そこで、リボンとフレームが付いたシェルを用意しました。ユーザーがリボン ボタンをクリックすると、適切なモジュール (ユーザー コントロール) がフレームにロードされます。すべてが良いです。ただし、(別のリボンボタンをクリックして) 別のモジュールに移動し、元のモジュールをクリックすると、 RibbonButton
, 現在、同じモジュールの 2 つのインスタンスが開いています...しかし、フレーム内に表示されるのは 1 つだけです...他のモジュールはフレームのスタック内にあります。
そこで私の質問は、別のモジュールに移動するときにユーザーコントロールを閉じるようにフレームに指示するにはどうすればよいですか?設定してみました JournalEntry.KeepAlive="False"
, 、しかしそれでもうまくいきませんでした。何かご意見は?実際に投稿できるコードはそれほど多くありませんが、お役に立てれば投稿させていただきます。
解決
前のエントリに「戻る」つもりがない場合は、次のように使用できます。 NavigationService.RemoveBackEntry() 移動するたびに履歴を消去します。それを行う最も簡単な方法は、フレームの ナビゲートされたイベント:
frame.Navigated += frame_Navigated;
void frame_Navigated(object sender, NavigationEventArgs e)
{
frame.NavigationService.RemoveBackEntry();
}