2
我試圖創建一個使用模塊和視圖加載按需的PRISM應用程序。當我加載視圖和模塊爲「WhenAvailable」時,一切正常,但這不是我想要的。在運行時獲取對象類型PRISM MVVM
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一切正常加載。但是我在我的應用程序中有多個視圖,並且會有新的視圖,所以非泛型操作不是一種選擇。
任何幫助將非常感激。
你試過這個版本的Prism是什麼版本? –
@ R.Richards我相信這是最新的版本,它在2周前從nuget得到,它的** 6.2.0.0 ** – drajvver
您的代碼與您的評論相結合對我來說毫無意義。爲了按需加載模塊,您必須使用模塊管理器。另外,如果您手動將視圖添加到區域,則不必爲其指定名稱。只需創建視圖並將其粘貼到該區域即可。 –