Domanda

Questo mi sembra che sarebbe una soluzione facile, ma sto sprecando troppo tempo cercando di capire questo fuori. Forse sto progettando la mia domanda in modo errato (che potrebbe essere il caso), quindi ti prego di aiutarmi se si dispone di una soluzione migliore.

Sto progettando un'applicazione WPF livello enterprise che assomiglia molto a Outlook con un Ribbon invece di una barra degli strumenti. Ho un sacco di diversi moduli che vengono caricati in un frame quando l'utente preme il RibbonButton. Tenete a mente che il suo nastro è condivisa preferito su tutti i moduli.

Così ho un guscio con un nastro e un telaio. Quando l'utente preme il pulsante del nastro, si carica il modulo corretto (usercontrol) nel telaio. Va tutto bene. Tuttavia, se ci si dirige verso un altro modulo (facendo clic su un altro RibbonButton), e quindi fare clic sul RibbonButton originale, ora ho due istanze dello stesso modulo aperto ... ma è mostrato solo uno nel telaio ... l'altro modulo è in stack del telaio.

Quindi la mia domanda è, come dico la cornice per chiudere l'UserControl quando naviga verso un modulo diverso? Ho provato a installare il JournalEntry.KeepAlive="False", ma che ancora non ha funzionato. qualche idea? In realtà non è molto codice per pubblicare, ma posso farlo se vi aiuterà.

È stato utile?

Soluzione

Se non ha intenzione di andare "indietro" per la voce precedente, è possibile utilizzare NavigationService.RemoveBackEntry () per cancellare la cronologia ogni volta che navigare. Il modo più semplice per farlo è quello di gestire il frame evento navigato :

frame.Navigated += frame_Navigated;

void frame_Navigated(object sender, NavigationEventArgs e)
{
    frame.NavigationService.RemoveBackEntry();
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top