Domanda

Sto costruendo un'applicazione WPF utilizzando le pagine e il servizio di navigazione.
Una delle pagine prendono un oggetto come un costruttore

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

    ....

Quindi, per navigare ad esso faccio

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

Il problema si verifica quando sto modificando qualcosa nella pagina e tornare indietro, e l'ora di MyPage ottengo il seguente errore:

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

Che cosa sto facendo di sbagliato?

È stato utile?

Soluzione

È necessario dire l'applicazione host che la pagina dovrebbe persistere in memoria, invece di essere ogni volta che si esce e "reloaded" quando torni ad esso "scaricato". Ciò risulta essere piuttosto facile: Basta aggiungere il href="http://msdn.microsoft.com/en-us/library/system.windows.controls.page.keepalive.aspx" attributo KeepAlive alla tua dichiarazione di pagina:

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

È interessante notare che la documentazione MSDN dice questo:

  

Pagine che vengono istanziati e   navigato a utilizzare solo il codice (per   esempio, la chiamata Naviga), sono   mantenuto automaticamente in vita.

Non ho trovato che sia il caso, e dalla tua domanda mi sembra che non stai trovando in questo modo sia.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top