2011-07-01 59 views
1

我們在運行時將tabcontrols添加到我們的應用程序中。每個tabcontrol都被賦予一個ViewModel作爲DataContext。我們通過向主應用程序View發送消息來添加tabcontrols;該消息包含要用作datacontext的ViewModel。MVVM Binding - 在View中創建控件,如何綁定ViewModel中的屬性?

從主應用程序ViewModel中,我們通過向主應用程序視圖發送消息來創建TabItem並將其添加到指定的TabControl,從而將tabitems添加到選項卡控件。

我想將TabItem的某些屬性綁定到TabControl的ViewModel的某些屬性;當然,這需要在編程上完成。

由於tabcontrol和tabitem不知道ViewModels(只有DataContext),我該如何指定ViewModel的屬性來綁定tabitem屬性呢?

感謝您的任何意見...

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

回答

0

你可以施放的DataContext到視圖模型的類型,然後訪問屬性的方式。

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

這看起來不對 - 應該視圖有這種耦合到虛擬機?感謝您的回覆.... – Number8

+0

通常,這可以通過在XAML中設置property = {Binding VMProperty}來完成,但由於您在此創建視圖,因此我不相信這是一個選項。理想情況下,您將使用像Unity這樣的容器將TabControl添加到Shell。 – NickHeidke

相關問題