我正在尝试为小型网站制作合成用户界面。
我的建筑树看起来像这样:
最后一个是排序IPodConductor,所以包含IPage的屏幕(pagepod)的组合(如MainPage,ContactPage ..)
我的整个构造可以在Caliburns约定之后找到我的所有视图模型和视图,但不能找到我的MainPage。
错误如下: “无法找到Gymsport.Client.Pages.Main.MainPageViewModel的视图”
我对视图的结构如下: Gymsport.Client.Pages.Main.MainPageView
遵循惯例,caliburn应该能够找到我的观点......但它确实没有。
任何有关解决此错误的任何提示或指示。
提前致谢。
答案 0 :(得分:4)
在C.M中,还有一个额外的逻辑来查找关于像页面等单词的视图(参见here)。
因此,您可以更改视图以匹配C.M中的规则,从视图模型中删除单词页面,或者您可以使用以下内容强制执行自定义简单视图位置:
ViewLocator.LocateTypeForModelType = (modelType, displayLocation, context) =>
{
var viewTypeName = modelType.FullName.Substring(
0,
modelType.FullName.IndexOf("`") < 0
? modelType.FullName.Length
: modelType.FullName.IndexOf("`")
);
viewTypeName = viewTypeName.Replace("Model", string.Empty);
if (context != null)
{
viewTypeName = Regex.Replace(viewTypeName, "View$", string.Empty);
viewTypeName += "." + context;
}
var viewType = (from assembly in AssemblySource.Instance
from type in assembly.GetExportedTypes()
where type.FullName == viewTypeName
select type).FirstOrDefault();
return viewType;
};