0

誰かが子ウィンドウとナビゲーションを手伝ってくれますか?

コードから子ウィンドウを作成し、そのコンテンツを次のように設定しました

ChildWindow CW = new ChildWindow();
CW.Content = new MainPageMenu(param1);

ここで、「MainPageMenu」自体は、「navigation:Frame」を持つ Silverlight ページです。

コンストラクターでは、「param1」に従ってさまざまなページに移動します。

目的のページに移動すると、アドレスバーに更新された uri が表示されます。

それはそれを示すべきですか?ページが子ウィンドウでナビゲートされると……?

これは初めてうまくいきます。子ウィンドウを閉じて、diff「param1」で再度開いて、他のページに移動したら

それは決してナビゲートされません.. !!! 最初の呼び出しで移動したのと同じページが表示されます...

行にエラーはありません -

this.ContentFrame.Navigate(u); 

コンストラクターで。

これはナビゲーションフレームワークのバグですか、それともこれを達成するために何か他のことをすることになっていますか?

助けてください。

4

1 に答える 1

1

JournalOwnershipそれがここでの鍵であることはすでにわかっているようです。しかし、もう少し背景を説明するために、これはマジックではなく、より多くのアルゴリズムです。Navigation Framework がブラウザー ジャーナルと統合するかどうかを、Frame.JournalOwnership設定に基づいてどのように判断するかを次に示します。

JournalOwnership.Automatic(デフォルト) -Frameが「トップ レベル」Frameの場合、ブラウザ ジャーナルでナビゲートします。そうでない場合は、そうではありません。Frame「最上位」とは、ビジュアル ツリーを上っていく場合、途中で他に何も見つからないことを意味します。

JournalOwnership.OwnsJournal-Frameは常に独自のジャーナルを所有し、ブラウザーのジャーナルと対話しようとしません。

JournalOwnership.UsesParentJournal-Frameは常にブラウザと統合されます。トップレベルでない場合Frame、例外がスローされます。

ChildWindow の興味深い点は、Frameがビジュアル ツリーを上って "最上位" かどうかを確認するときFrameに、それが見つからないことPopupです ( が同じようにビジュアル ツリーにルート化されておらず、 をChildWindow使用しているためPopup)。したがって、それはトップレベルであると考えます (この場合、これは実際には正しくないかもしれませんが、他に何ができるでしょうか?) ので、ブラウザー ジャーナルと統合されます。

于 2011-02-01T19:04:05.900 に答える