4

ページとナビゲーション サービスを使用して 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'.  

私は何を間違っていますか?

4

1 に答える 1

8

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

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

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

インスタンス化され、コードのみを使用してナビゲートされるページ (Navigate の呼び出しなど) は、自動的に維持されます。

私はそれが事実であるとは思いませんでした.あなたの質問から、あなたもそのように感じていないようです.

于 2009-05-13T23:20:14.773 に答える