我对Xamarin Forms应用程序使用Prism和Unity容器。在Prism.Unity.Forms中取消注册View和ViewModel
我在哪里注册我的网页这样
Container.RegisterTypeForNavigation<ViewType,ViewModelType>();
有时
Container.RegisterTypeForNavigation<ViewType>();
现在我要注销一些注册页面与他们一起视图模型。
喜欢的东西
Container.UnRegisterTypeForNavigation<ViewType>();
但它不能想出一个办法。需要帮忙。
到目前为止,我已经试过了,
ContainerRegistration registrationContainer = Container.Registrations.FirstOrDefault(obj => obj.MappedToType == GetPageType(pageType));
if (registrationContainer?.LifetimeManager!=null)
{
registrationContainer.LifetimeManager.RemoveValue();
}
没有运气。
原因,我想注销...
我有两个观点
Project.Namespace1.ViewA
Project.Namespace2.ViewA
现在我想开Project.Namespace1.ViewA
是某些情况下,以及在其他情况下Project.Namespace2.ViewA
。
这可以作为
NavigationService.NavigateAsync("ViewA");
它定位到上次查看在团结容器中注册完成。 这就是为什么我要在注册新视图之前取消注册以前的视图。
你为什么要这样做?取消注册视图不会隐藏视图,也不会注销视图模型。 – Haukinger
Unity没有开箱即用的注销方法。您可以查看清除注册的答案:https://stackoverflow.com/a/44361488/114664。不过,我同意@Haukinger这可能不是一个好主意。你想达到什么目的? –
我更新了我的问题,并注销了意见后的原因。希望这可以帮助。 – Yogesh