【发布时间】:2018-01-16 06:22:09
【问题描述】:
我正在为我的 Xamarin Forms 应用程序使用带有 Unity 容器的 Prism。
我在哪里注册这样的页面
Container.RegisterTypeForNavigation<ViewType,ViewModelType>();
有时
Container.RegisterTypeForNavigation<ViewType>();
现在我想取消注册一些已注册的页面及其 ViewModel。
有点像
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");
它导航到在 Unity 容器中注册的最后一个视图。 这就是为什么我想在注册新视图之前取消注册以前的视图。
【问题讨论】:
-
为什么要这样做?注销视图不会隐藏它,注销视图模型也不会处理任何事情。
-
Unity 没有现成的注销方法。您可以查看此答案以清除注册:stackoverflow.com/a/44361488/114664。但是,我同意@Haukinger 的观点,这可能不是一个好主意。你想完成什么?
-
我已经更新了我的问题,说明取消注册视图的原因。希望这会有所帮助。
标签: xamarin.forms unity-container prism