2014-09-22 99 views
0
  1. 我有2次和的ViewModels稱爲SummaryViewSummaryViewModelDetailsView控件DetailsViewModel
  2. 我創建的ObservableCollection財產SummaryViewModel
  3. 以下代碼在摘要查看訪問集合並將其與View綁定。

============================================ ======================================訪問視圖模型的的ObservableCollection

<TabControl ItemsSource="{Binding Path=DetailsViewModelCollection}"> 
    <TabControl.ItemTemplate> 
     <DataTemplate> 
      <HeaderedContentControl> 
       <TextBlock Text="{Binding Path=TabNameICanAccessTheItemsFromCollectionHere.}"/> 
      </HeaderedContentControl> 
     </DataTemplate> 
    </TabControl.ItemTemplate> 

    <TabControl.ContentTemplate> 
     <DataTemplate> 
      <LocalViews:InventoryDetailsView DataContext="HowCanIAccessItemsFromCollection"/> 
     </DataTemplate> 
    </TabControl.ContentTemplate> 
</TabControl> 

問題:

無法從訪問項目ObservableCollectionContentTemplate。 但能夠訪問ItemTemplate中的項目。

更多詳細信息:

  1. 我一旦用戶點擊我加入項目DetailsViewModelCollection通過調用參數的構造函數有SummaryView一個按鈕。
  2. 集合已成功創建,我可以訪問ItemTemplate部分中的每個項目及其屬性。 例如我可以看到多個選項卡正在創建,不同的TabName名稱來自集合。
  3. 但是從ContentTemplate部分觸發DetailsViewModel的默認構造函數用於整個集合一次,並且該實例已綁定到所有選項卡。

我使用了這裏的示例和源代碼。 http://tap-source.com/mvvm-tabcontrol/ 我可能會做一些愚蠢的綁定錯誤,但無法弄清楚。

謝謝。

+0

我想你可以使用'Binding'與RelativeResource來定位'TabControl'並將路徑設置爲'DataContext.DetailsViewModelCollection' – 2014-09-22 20:59:22

+0

沒有國王,我試過它沒有幫助。 – Sai 2014-09-25 15:35:36

回答

0

我想出了這個問題。

作爲一個常規的過程在DetailsView中,我將DataContext指定爲DetailsViewModel。 這就是原因當添加新選項卡時,會創建一個新的可空實例並將其綁定到該實例。當我刪除該DataContext時,問題得到解決。

我也爲其他人發佈了一個簡單的例子,如果他們遇到類似的錯誤。