Dans mon application PRISM, l'utilisateur peut ouvrir une vue d'un module dans un onglet (Navigate("TestView")
). Maintenant, je veux fermer cette vue via OnCloseTab("TestView")
mais la vue enregistrée n'a pas de nom.Est-il possible d'enregistrer View avec son nom via regionManager.RequestNavigate pour l'enlever plus tard de la région?
public class MainWindowViewModel: BindableBase
{
...
private void Navigate(string uri)
{
this.regionManager.RequestNavigate("TabRegion", uri);
}
private void OnCloseTab(string uri)
{
IRegion region = this.regionManager.Regions["TabRegion"];
object view = region.GetView(uri);
if (view != null)
{
region.Remove(view);
}
}
}
Le module est enregistré dans mon bootstrapper comme ceci:
protected override void ConfigureModuleCatalog()
{
base.ConfigureModuleCatalog();
ModuleCatalog moduleCatalog = (ModuleCatalog)this.ModuleCatalog;
Type modulePType = typeof(Module.ProductionData.ProductionDataModule);
moduleCatalog.AddModule(typeof(Module.ProductionData.ProductionDataModule));
}
Il fonctionne avec:
IRegion region = regionManager.Regions["TabRegion"];
object view = region.GetView("TestView");
if (view == null)
{
view = ServiceLocator.Current.GetInstance<Views.TestView>();
region.Add(view, "TestView");
}
Mais le MainWindowViewModel ne sait pas sur les vues des modules. Y at-il un moyen de supprimer la vue, quand il n'a pas de nom? Merci pour tout conseil
Merci pour votre aide, Luke. J'ai posté ma solution finale. – Max