获取运行时PRISM MVVM上的对象类型
本文关键字:对象 类型 MVVM 运行时 PRISM 获取 | 更新日期: 2023-09-27 18:16:22
我正在尝试创建一个PRISM应用程序,使用按需加载的模块和视图。当我加载视图和模块为"WhenAvailable"一切工作,但这不是我想要的。
void Navigate(object obj)
{
if (obj != null)
{
PreloadView(obj as IView, "ContentRegion");
_manager.RequestNavigate("ContentRegion", obj.ToString());
}
}
private void PreloadView<T>(T obj, string regionName) where T : IView
{
var region = _manager.Regions[regionName];
var viewName = obj.ToString();
var view = region.GetView(viewName);
if (view == null)
{
view = _container.Resolve<T>();
region.Add(view, viewName);
}
_manager.Regions[regionName].Activate(view);
}
这是我的代码,加载视图,位于MainWindowViewModel类处理区域,没有别的。只要我能在导航函数上得到真正的对象类型,我就能工作。它总是System。RuntimeType尽管它在调试器中说它是一个UserControl实现了IView。我不明白这是怎么回事。
我知道这个方法是有效的,因为当我显式地把UserControl而不是T时,一切都正确加载。但我的app中有多个视图,还有新视图,所以非泛型地做这个不是一个选项。
用户动态关键字。它将在运行时接受该类型。