我正在尝试创建一个使用按需加载的模块和视图的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类中,它处理区域而不处理任何其他内容。如果我能以某种方式获得Navigate函数上的真实对象类型,我会工作。它总是 System.RuntimeType ,即使它在调试器中说它是 UserControl ,它实现了 IView 。我无法理解这个问题
我知道这种方法有效,因为当我明确地使用 UserControl 而不是 T 时,一切都正确加载。但我在我的应用程序中有多个视图,而且还有新的视图,所以非一般性地执行此操作有点不是一种选择。
任何帮助将非常感谢。
答案 0 :(得分:0)
用户动态关键字。它将在运行时接受该类型。