获取运行时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中有多个视图,还有新视图,所以非泛型地做这个不是一个选项。

获取运行时PRISM MVVM上的对象类型

用户动态关键字。它将在运行时接受该类型。