2011-07-01 9 views
1

実行時にtabcontrolsをアプリケーションに追加します。各タブコントロールには、DataContextとしてViewModelが与えられます。メインのApp Viewにメッセージを送信してタブコントロールを追加します。メッセージには、datacontextとして使用されるViewModelが含まれています。MVVMバインディング - Viewでコントロールを作成する方法、ViewModelでプロパティにバインドする方法

メインアプリケーションのViewModelから、メインのアプリケーションビューにメッセージを送信してTabItemを作成し、指定したTabControlに追加することでタブコントロールにタブアイテムを追加します。

TabControlの特定のプロパティをTabControlのViewModelの特定のプロパティにバインドしたいと思います。もちろん、これはプログラマティカルに行う必要があります。

ViewControlとTabitemはViewModel(DataContextのみ)を認識しないので、ViewModelのプロパティを指定してタブアイテムのプロパティをバインドする方法を教えてください。何かアドバイスのため

おかげで...

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

答えて

0

あなたはViewModelにの型にDataContextのをキャストして、そのようにプロパティにアクセスすることができます。

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

Viewには、そのような種類のVMとのカップリングが必要ですか?返信をありがとう.... – Number8

+0

これはXAMLでプロパティ= {Binding VMProperty}を設定することで実現できますが、ここでビューを作成しているので、これはオプションではありません。理想的には、Unityのようなコンテナを使用してTabControlsをシェルに追加します。 – NickHeidke

関連する問題