Ich habe MEF verwendet, um externe XAPs zu laden, das funktioniert hervorragend. Aber wenn ich die Seite mit dem geladenen Steuerelement verlasse und dann zurückkehre, ist das Steuerelement genau in dem Zustand, in dem ich es verlassen habe.
Manchmal ist das großartig, aber nicht für das Projekt, an dem ich arbeite.
Wie setze ich das Steuerelement in seinen Ausgangszustand zurück?
Das Steuerelement wird (erfolgreich) hierher geladen:
<ItemsControl x:Name="content"/>
Dies ist in der XAML-Auszeichnung
Ich habe eine On NavigatedFrom-Methode:
protected override void OnNavigatedFrom(NavigationEventArgs e)
{
content.Items.Clear();
}
Dies erfolgreich entfernt das Steuerelement, wie vor dem Hinzufügen dieser, wenn ich zurück zu der Seite ging es stürzte sagen mir das Steuerelement war bereits ein Kind eines Elements.
Hier ist der vollständige Seitencode:
public partial class Wizard : IPartImportsSatisfiedNotification
{
public Wizard()
{
InitializeComponent();
CompositionInitializer.SatisfyImports(this);
var controlToLoad = IsolatedStorageHelper.GetValue("control");
if (!String.IsNullOrEmpty(controlToLoad))
{
CatalogService.AddXap(controlToLoad + ".xap");
}
else
{
NavigationService.Navigate(new Uri("/ServiceSelector", UriKind.Relative));
}
}
protected override void OnNavigatedFrom(NavigationEventArgs e)
{
content.Items.Clear();
}
[Import]
public IDeploymentCatalogService CatalogService { get; set; }
[ImportMany(AllowRecomposition = true)]
public Lazy<UserControl>[] MefModuleList { get; set; }
#region IPartImportsSatisfiedNotification Members
public void OnImportsSatisfied()
{
MefModuleList.ToList()
.ForEach(module =>
content.Items.Add(module.Value)
);
}
#endregion
}
Hat jemand eine Idee?
Danke,