我正在开发一个 WPF 应用程序,该应用程序将其模块从 dll 作为惰性屏幕加载到 TransitionContentControl 中。遵循标准命名约定时,模块中 Viewmodel 的视图会正确显示。但是,我有两个问题:
1)模块本身使用外部“小部件”,带有从另一个 dll 加载的视图的屏幕。
[ImportMany(typeof(IWidget), AllowRecomposition = true)]
public IEnumerable<ExportFactory<IWidget, IWidgetMetadata>> _widgets { get; set; }
<ContentControl x:Name="Navigator" cal:View.Model="{Binding Navigator}"/>
属性“Navigator”被调用,并且在第一个实例中没有找到视图。但随后它被第二次调用并且视图被检测到,因为我可以看到小部件视图模型有一个附加视图(调用 OnViewAttached)到它们(ViewAware 类),视图本身也有 ViewModel 作为它的 DataContext。但是,它们没有在最后显示;我也认识到从未调用过“OnViewLoaded”,而是视图“找不到视图......”。问题出在哪里?
我使用了一个类似的原型应用程序并添加了产生问题的 Widgets 项目,但是 Navigator 属性在这里只调用一次。输出是相同的,但是没有找到视图。
2)另一个问题是“cal:View.Context”似乎在模块中不起作用,因此View文件夹中的子文件夹似乎没有得到解决。
/帕特里克