2012-10-10 3 views
0

별도의 XAP 파일에서 웹 서버의 컨트롤을 동적으로로드하고 있습니다. 인스턴스를 만든 후에 탭 페이지에 표시하려고합니다. 컨트롤은 CM을 사용하는 MMVM 컨트롤 일 수도 있지만 MVVM 표준이 아닌 컨트롤입니다.Caliburn Micro를 사용하여 EXTERNAL MVVM 및 NON MVVM 컨트롤을 동적으로로드하는 방법

<ContentControl Name="TestControl" /> 

테스트 컨트롤을 동적으로로드 된 컨트롤의 새로운 인스턴스를 생성 통해 설정됩니다 유형의 UserControl의 속성입니다 :

는 탭을 시도하기 전에 내가 사용하여 단순히 페이지에 동적으로 컨트롤을 보여 테스트 . 이제 이것이 내게보기를 찾을 수 없다는 오류를줍니다. 비 MVVM 컨트롤의 경우 뷰가 없기 때문에 비 MVVM 컨트롤을 어떻게로드합니까?

테스트 컨트롤을 MVVM 컨트롤로 만들려고했지만 뷰 오류를로드 할 수 없습니다. 그러한 인스턴스가 생성되지 않았기 때문에 의미가 있습니다. 뷰 모델 외에도 동적으로로드 된 뷰의 인스턴스를 만드는 경우 CM이 발견 할 수 있도록이 뷰를 어떻게 "추가"합니까?

마지막으로이 기능을 Silverlight의 탭 컨트롤에 바인딩하려면 어떻게해야합니까? 이 아이디어는 각각 별도의 탭 페이지에서 렌더링되는 사용자 정의 컨트롤 (플러그인) 모음을 갖는 것입니다.

도움 주셔서 감사합니다.

는 "MVVM 제어"같은 건 없다

답변

0

(I이 MVVM 모든 복잡성이 가치가 있는지 확실하지 여전히 MVVM를 사용하지 않는 시간에 수행되었다). MVVM은 단지 제어 유형이 아닌 패턴입니다. 기본적으로 Caliburn에서는 UserControls 또는 Views에서 직접 작업 할 필요가 없지만 ViewModel first 접근 방식을 선택하면 Caliburn 프레임 워크가 일치하는보기를 찾을 수 있어야합니다. 귀하의 경우 XAP 파일을 동적으로로드하기 때문에이를 어셈블리 목록에 추가해야합니다. Caliburn은 View/ViewModel을 찾고 (함께 바인딩합니다.) IAssemblySource 인터페이스를 통해 수행됩니다. 설명서에 따라 here :

따라서 AssemblySoure.Instance는 무엇입니까? 이 곳에서 Caliburn.Micro는보기를 찾습니다. 응용 프로그램을 수행하는 동안 시간에 어셈블리를 추가하여 프레임 워크에서 사용 가능하게 만들 수 있습니다. 부트 스트 래퍼에서 수행 할 특별한 장소가 있습니다.

+0

MVVM 컨트롤은보기 및보기 모델 클래스가있는 컨트롤을 의미합니다. 표준 컨트롤은 분명히 이것을 가지고 있지 않으므로 cm은 제 컨트롤에 대한 어떤 시각도 찾지 못합니다. 그래서 나는이 일을하는 데 필요한 코드는 다음과 같습니다; 공공 MyControl CustomControl 이 MyControl myControl = Assembly.Load ("SomeDynamicAssembly) .GetType MyControl 등 ("CustomControl ") { GET {myControl를 반환}; } user1029883

+0

앞서 말했듯이 IAssemblySource에로드 된 어셈블리를 추가하고 컨테이너를 통해 뷰를 만드는 대신 ViewModel을 만들어야합니다. 어셈블리 CM의 View 및 ViewModel이 뷰를 가져 와서 자동으로 ViewModel에 바인딩합니다. –

+0

그래도 문제를 이해할 수 없습니다. 동적으로로드 된 컨트롤에는 뷰나 뷰 모델이 없습니다. icall 버튼을로드하고 ContentControl에 추가하려면 어떻게해야합니까? – user1029883