3

小さなウェブサイトのコンポジションUIを作成しようとしています。

私の建物の木は次のようになります。

  • シェル(Conductor.Collection.AllActive)
    • 複数のiPodが含まれています(小さなウィジェットとして表示できます)
    • 1ポッドはPagePodです。

この最後のものは一種のIPodConductorであるため、IPage(MainPage、ContactPage ..など)を含む画面(ページポッド)の組み合わせ

私の全体の構造は、Caliburnsの規則に従って、すべてのビューモデルとビューを見つけることができますが、MainPageは見つけることができません。

エラーは次のとおりです:「Gymsport.Client.Pages.Main.MainPageViewModelのビューが見つかりません」

ビューの構造は次のとおりです。Gymsport.Client.Pages.Main.MainPageView

コンベンションに続いて、caliburnは私のビューを見つけることができるはずです...しかし、それはしません。

このエラーをデバッグするためのヒントや指針を教えてください。

前もって感謝します。

4

1 に答える 1

4

CMには、ページなどの単語に関するビューを検索するための追加のロジックがあります(ここを参照)。

したがって、CMのルールに一致するようにビューを変更するか、ビューモデルから単語ページを削除するか、次のようなカスタムの単純なビューの場所を適用することができます。

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;
};
于 2011-08-26T07:24:30.370 に答える