2012-08-22 5 views
0

내보기 모델에서 리소스 사전 XAML 파일을로드하려고했습니다. 인스턴스를 생성 할 수 있고 즉시 호출이 발생하지 않지만 컨트롤이 UI로 반환 된 후에 "COM 컴포넌트로의 호출에서 HRESULT E_FAIL 오류가 반환되었습니다"라는 오류 팝업이 나타납니다.Reference ResourceDictionary from ViewModel

ResourceDictionary의 파일이 ViewModelsResources.xamlMyApp
  • ViewModelsResources.xaml이 빌드 작업 표시되어 내 Silverlight 응용 프로그램의 루트 폴더입니다 MyApp/ViewModels에 위치한
    • : 출력 디렉토리에 복사 Content : Copy always

      나는 다음 뭐하는 거지 , 사용자 지정 도구 : MSBuild:Compile

    • ResourceDictionary 개체는 다음과 같이 인스턴스화됩니다 (이 코드는 리소스 di와 동일한 폴더에있는 클래스에 있습니다. ctionary 파일)
      ResourceDictionary VMResources = new ResourceDictionary() 
      { 
          Source = new Uri("/ViewModels/ViewModelsResources.xaml", UriKind.Relative) 
      };
    • 목적은 다음 (X)에 기초하여 인덱스를 통해 참조된다 : 키 값 : 상기 코드 샘플로 Template1 = VMResources["myTemplate"] as ControlTemplate; (동일한 클래스)

    디버깅 VMResourcesTemplate1가 양호한 값이 할당되고 있음을 보여준다. 이것이 COM 구성 요소에 대한 오류를 던지는 이유는 모르지만이 ResourceDictionary를 참조 할 때 격리되었습니다. VMResources[x]을 참조하는 줄을 꺼내더라도 오류는 없습니다. 어떤 도움이라도 대단히 감사 할 것입니다.

  • 답변

    0

    앞서 설명한 것처럼 작동하지만 리소스 사전에있는 템플릿에 이벤트를 지정할 수 없습니다. 나는 그것이 문제를 일으킬 것이라는 것을 깨달았어야했는데, COM은 나를 쫓아 냈습니다. 이벤트 처리기의 필요성을 해결하기 위해 Behaviors를 사용하고 있습니다. 거기에 행동에 대한 독서의 톤이있다. 나는 herehere을 시작했다.

    참고 : 제안 된대로 실제로 작동하므로이 질문을 삭제해야한다고 생각하는 사람은 누구나 그렇게 생각하면됩니다. 나는 이것이 나와 같은 일을하려고하는 누군가를 도울 수있는 떠나는 것으로 생각된다.