我正在尝试为小型网站制作组合 UI。
我的建筑树是这样的:
- 外壳 (Conductor.Collection.AllActive)
- 包含多个 iPod(您可以将它们视为小部件)
- 1 个 Pod 是一个 PagePod。
最后一个是 IPodConductor,因此是包含 IPage(如 MainPage、ContactPage ..)的屏幕(pagepod)的组合
我的整个构造可以按照 Caliburns 约定找到我所有的 View 模型和 View ,但不能找到我的 MainPage。
错误如下: “找不到 Gymsport.Client.Pages.Main.MainPageViewModel 的 View ”
我的 View 结构如下: Gymsport.Client.Pages.Main.MainPageView
按照约定,caliburn 应该能够找到我的 View ......但它没有。
任何人任何关于找出或调试此错误的提示。
提前致谢。
最佳答案
在 C.M 中,有额外的逻辑来查找有关页面等单词的 View (参见 here )。
因此,您可以更改 View 以匹配 C.M 中的规则,从 View 模型中删除单词 Page,或者您可以使用类似的东西强制自定义简单 View 位置:
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;
};
关于silverlight - 找不到 View 模型的 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7196554/