ナビゲーションwpfアプリでページを完全な状態で維持する方法

StackOverflow https://stackoverflow.com/questions/860866

  •  21-08-2019
  •  | 
  •  

質問

ページとナビゲーション サービスを使用して WPF アプリを構築しています。
ページの 1 つはオブジェクトをコンストラクターとして受け取ります

Sub New(ByVal o As Object)
    ' This call is required by the Windows Form Designer.
    InitializeComponent()

    ....

したがって、そこに移動するには、次のようにします

    Dim MyPage As New Page1(MyObject)
    MyBase.NavigationService.Navigate(MyPage)

この問題は、ページ内で何かを編集しているときに発生し、戻って MyPage に進むと、次のエラーが表示されます。

 Cannot create object of type 'Page1'. CreateInstance failed, which can be 
 caused by not having a public default constructor for 'Page1'.  

私の何が間違っているのでしょうか?

役に立ちましたか?

解決

別の場所に移動するたびにページが「アンロード」され、ページに戻るときに「再ロード」されるのではなく、ページがメモリ内に保持されるようにホスト アプリケーションに指示する必要があります。それは非常に簡単であることがわかります。を追加するだけです 生き続ける ページ宣言に属性を追加します。

<Page x:Class="..." KeepAlive="True">

興味深いことに、MSDN ドキュメントには次のように書かれています。

インスタンス化され、コードのみを使用してナビゲートされたページ(たとえば、ナビゲートを呼び出す)は、自動的に生存されています。

私はそのようには思いませんし、あなたの質問からも、そのようには思えないようです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top