2010-08-18 3 views
1

이것은 얼마 동안은 나에게 고통을주고 있습니다.컨테이너에 뷰 삽입 MVVM WPF

프리즘이 뷰를 영역에 삽입하는 것을 알고 있지만, 뷰를 사용하여 Cinch와 비슷한 종류의 작업을 수행하는 방법이 있습니까? 예를 들어 런타임에 뷰를 포함 할 수있는 컨테이너 (사실상 영역)가 있습니다. XAML에서 뷰를 명시 적으로 설정하고 싶지는 않습니다.이 인스턴스가로드 될 것이므로 좀 지저분합니다. 이 컨테이너를 사용할 수 있습니까? 그리고 나는 그것에 대해 어떻게 갈 것인가? (Cinch specific 일 필요는 없습니다.)

감사합니다.

답변

1

내 자신의 질문에 대답하기 위해 Prism v4가 유용한 솔루션 인 RequestNavigate라는 RegionExtension을 제공한다는 사실을 발견했습니다.

적절한 MVVM 방법론을 따르는 경우,이 작업은 매우 번거로운 것처럼 보이지만 새 창을 여는 데는 RequestNavigate를 사용했습니다 (StockTrader RI를 확인하십시오). 대신 WPF Extended Toolkit에서 ChildWindow 클래스를 사용하기로 결정했습니다. 여기서는 순수하게 'WindowState'(열기/닫기) 속성에 바인딩하고 XAML의 모든 항목을 지정할 수 있습니다.

나는 또한 레인지에 뷰를 주입하기 위해 RequestNavigate를 사용했다 - 나는 이제 Unity를 사용할 때 MEF를 사용하고있다. 디버깅과 관련하여 약간 '마술'이라면 훨씬 더 유연한 접근 방식을 찾을 수 있습니다.