2011-07-01 4 views
1

런타임에 tabcontrols을 응용 프로그램에 추가합니다. 각 tabcontrol에는 ViewModel이 DataContext로 주어집니다. 기본 앱보기에 메시지를 보내 탭 컨트롤을 추가합니다. 메시지에는 datacontext로 사용될 ViewModel이 포함됩니다.MVVM 바인딩 - View에서 컨트롤을 만드는 방법, ViewModel에서 속성에 바인딩하는 방법

주 앱 ViewModel에서 기본 앱보기로 메시지를 보내 TabItem을 만들고 지정된 TabControl에 추가하여 탭 컨트롤에 탭 항목을 추가합니다.

TabControl의 특정 속성을 TabControl의 ViewModel의 특정 속성에 바인딩하고 싶습니다. 물론 이것은 프로그래밍 방식으로 수행되어야합니다.

tabcontrol 및 tabitem은 ViewModels (DataContext 만)에 대해 알지 못하기 때문에 ViewModel의 속성을 지정하여 해당하는 속성을 바인딩하는 방법은 무엇입니까? 어떤 조언을

감사합니다 ...

Messenger.Default.Register<AddTabControlMessage>(this, m => 
    { 
    TabControl tc = new TabControl(); 
    tc.DataContext = m.ViewModel; 
    // etc. 
    }); 

답변

0

당신은 뷰 모델의 종류에 DataContext를 캐스팅하고 그런 식으로 속성에 액세스 할 수 있습니다.

tc.SomeProperty = ((MyViewModel)DataContext).SomeVMProperty; 
+0

보기가 옳지 않습니다.보기에 VM과 같은 종류의 결합이 있어야합니까? 답장을 보내 주셔서 감사합니다 .... – Number8

+0

일반적으로 XAML에서 속성 = {Binding VMProperty}를 설정하면이 작업을 수행 할 수 있지만 여기에서보기를 만들므로 그 옵션이 아닌 것 같습니다. 이상적으로 Unity와 같은 컨테이너를 사용하여 셸에 TabControls를 추가 할 수 있습니다. – NickHeidke

관련 문제