2012-01-09 36 views
0

我正在實施WPF-MVVM項目DataContexts如何流向DataTemplates中的UserControls?

我有一個TabControl,其中每個選項卡代表一個對象Server。 在每個選項卡上,有一個ListBox,它在Application列表上綁定。 的標籤控制和listbox是在一個ServerViewModel

綁定對象Application是模型化作爲UserControl,我想該對象上的另一個視圖模型被結合稱爲ApplicationViewModel

<TabControl x:Name="_tabControl" 
DataContext="{StaticResource ServerVM}" 
ItemsSource="{Binding UserServerCollection}"> 
    <TabControl.ContentTemplate> 
       <DataTemplate> 
        <ListBox ItemsSource="{Binding ApplicationCollection}"> 
          <DataTemplate> 
           <view:ApplicationView /> 
          </DataTemplate> 
        </ListBox> 
       </DataTemplate> 
    </TabControl.ContentTemplate> 
</TabControl> 

的問題是,所述的tabcontrol列表框有很多項目,但usercontrols沒有很好的綁定。

請幫我。 我不知道如何設置userControl datacontext

+0

你們是不是要符合您ApplicationView與該用戶控件的自定義ViewModel?它的新MVVM用戶所犯的錯誤之一... – Will 2012-01-09 19:14:28

+0

爲什麼** asp.net **標籤? – 2012-01-09 22:16:35

回答

0

您不一定需要設置DataContext,它會通過繼承和ListBox的功能自動設置爲模板項目,據推測它是一個應用程序視圖模型ApplicationCollection

如果DataContext設置的ApplicationView不過裏面,你需要明確設置它,因爲precedenceDataTemplate。不確定DataContext="{Binding}"是否足夠,但您也可以嘗試relative source綁定到封閉ListBoxItemDataContext

0

您需要在ApplicationCollection對象是類型的ApplicationViewModel

ApplicationView繼承了它從ListBoxItem.DataContextDataContext,所以它的默認DataContext將任何物體在ApplicationCollection