2011-08-25 6 views
3

작은 웹 사이트에 대해 컴포지션 UI를 만들려고합니다.viewmodel보기를 찾을 수 없습니까?

내 건물 나무는 다음과 같습니다

  • 쉘 (Conductor.Collection.AllActive)
    • 여러 아이팟의 (당신이 그들을 볼 수있는 작은 위젯)을 포함
    • 1 포드가 PagePod입니다.

이 마지막 하나는 화면 Ipage이 포함합니다 (pagepod) (MainPage, ContactPage 등 ..) 너무 조합

내 모든 viewmodels을 찾을 수 있습니다 내 전체 건설 및 종류 IPodConductor,이다 Caliburns 컨벤션 다음보기,하지만 내 MainPage 않습니다. "Gymsport.Client.Pages.Main.MainPageViewModel에 대한 리뷰를 찾을 수 없습니다"

뷰에 내 구조는 다음과 같습니다 : Gymsport.Client.Pages.Main.MainPageView

이 오류는 다음과 같습니다

관례에 따라, caliburn은 내 견해를 찾을 수 있어야합니다 ... 그러나 그것 doens't.

누구든지이 오류를 디버깅하기위한 지침이나 포인터를 찾아야합니다.

미리 감사드립니다.

+0

:

그래서 당신은 CM의 규칙과 일치하도록보기를 변경 뷰 모델에서 페이지 단어를 제거하거나 그런 일에 사용자 정의 간단한 뷰 위치를 적용 할 수 있습니다 할 수 있습니다 부트 스트 래퍼와 같은 어셈블리? –

답변

4

C.M에는 Page 등의 단어에 관한 조회를 찾기위한 추가 논리가 있습니다 (here 참조). 에 MainPageView 있습니까

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; 
}; 
+0

굉장, 내 문제가 총 해결되었습니다. 내가 그것에 대해 설명서에서 아무것도 찾을 수 없습니다 ... 나는 소스를 삼키기 위해 더 본능이 필요하다고 생각 :) 큰 감사합니다! –

+0

Gymsport.Client.Pages.Main.MainPage에 대한보기 이름 만 변경하면됩니다. – gius