Silverlight 找不到viewmodel的视图?

Silverlight 找不到viewmodel的视图?,silverlight,mvvm,caliburn.micro,convention,Silverlight,Mvvm,Caliburn.micro,Convention,我正在尝试为一个小网站制作一个合成UI 我的建筑树如下所示: 外壳(导体、集合、活动) 包含多个IPod(您可以将其视为小部件) 1舱是一个PagePod 最后一个是IPodConductor,因此是包含IPage的屏幕(pagepod)的组合(如MainPage、ContactPage..) 我的整个构造可以找到所有遵循Caliburns约定的viewmodels和视图,但不能找到我的主页 错误如下: “找不到Gymsport.Client.Pages.Main.MainPageVie

我正在尝试为一个小网站制作一个合成UI

我的建筑树如下所示:

  • 外壳(导体、集合、活动)
    • 包含多个IPod(您可以将其视为小部件)
    • 1舱是一个PagePod
最后一个是IPodConductor,因此是包含IPage的屏幕(pagepod)的组合(如MainPage、ContactPage..)

我的整个构造可以找到所有遵循Caliburns约定的viewmodels和视图,但不能找到我的主页

错误如下: “找不到Gymsport.Client.Pages.Main.MainPageViewModel的视图”

我对视图的结构如下所示: Gymsport.Client.Pages.Main.Main页面视图

按照惯例,caliburn应该可以找到我的视图。。。但事实并非如此

任何人都可以找到解决此错误的提示或指针


提前感谢。

在C.M中,有额外的逻辑用于查找有关页面等词的视图(请参阅)

因此,您可以更改视图以匹配C.M中的规则,从视图模型中删除word页面,或者您可以使用以下内容强制自定义简单视图位置:

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;
};
ViewLocator.LocateTypeForModelType=(模型类型、显示位置、上下文)=>
{
var viewTypeName=modelType.FullName.Substring(
0,
modelType.FullName.IndexOf(“`”)<0
?modelType.FullName.Length
:modelType.FullName.IndexOf(“`”)
);
viewTypeName=viewTypeName.Replace(“Model”,string.Empty);
if(上下文!=null)
{
viewTypeName=Regex.Replace(viewTypeName,“View$”,string.Empty);
viewTypeName+=“+”上下文;
}
var viewType=(来自AssemblySource.Instance中的程序集
来自程序集中的类型。GetExportedTypes()
其中type.FullName==viewTypeName
选择类型).FirstOrDefault();
返回视图类型;
};

引导程序所在的程序集中是否有MainPageView?太棒了,完全解决了我的问题。我在文档中找不到关于它的任何信息。。。我想我需要更多的本能来吞噬这个源头:)非常感谢!似乎只有将视图重命名为Gymsport.Client.Pages.Main.MainPage也可以。