2013-02-19 105 views
0

我試圖使用單個DataGrid作爲選項卡控件中每個選項卡的內容(然後我將重新加載網格的內容,以便在單擊時顯示處於不同狀態的模型不同的標籤)。從TabControl的DataTemplate綁定到主DataContext

但是,由於某種原因,DataGrid無法在TabControl的DataTemplate中進行綁定。但是,在頁面的主流程中,相同的Datagrid XAML和綁定完美工作。

<!-- first grid works perfectly--> 
<DataGrid ItemsSource="{Binding RANsToDisplay}" /> 

<TabControl>     
    <TabControl.ContentTemplate> 
     <DataTemplate> 
      <!-- Second grid fails to bind--> 
      <DataGrid ItemsSource="{Binding RANsToDisplay}" /> 
     </DataTemplate> 
    </TabControl.ContentTemplate> 

    <TabItem Header="Calls"></TabItem> 
    <TabItem Header="Collections"></TabItem> 
    <TabItem Header="Receipts"></TabItem> 
</TabControl> 

我想這是因爲相對於外面項目的項目在選項卡控件的DataTemplate的DataContext的是不同的,但長時間的休息後,我纔剛剛得到我的WPF的後腦勺上,和我不知道如何讓DataTemplate中的DataGrid正確綁定到DataContext。

非常感謝任何幫助/指針。

回答

3

您需要爲DataGrid綁定使用相對路徑;

<!-- first grid works perfectly--> 
<DataGrid ItemsSource="{Binding RANsToDisplay}" /> 

<TabControl>     
    <TabControl.ContentTemplate> 
     <DataTemplate> 
      <!-- Second grid fails to bind--> 
      <DataGrid ItemsSource="{Binding DataContext.RANsToDisplay, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}" /> 
     </DataTemplate> 
    </TabControl.ContentTemplate> 

    <TabItem Header="Calls"></TabItem> 
    <TabItem Header="Collections"></TabItem> 
    <TabItem Header="Receipts"></TabItem> 
</TabControl> 

只要改變用戶控件到無論你控制的是你的房子的DataContext

+0

輝煌,是得到它,感謝PGallagher - 從基於同胞萊斯特IT呆子! – Ted 2013-02-19 18:47:44

+0

太棒了,很高興我能幫到你!好男人必須堅持你知道!嘻嘻 – PGallagher 2013-02-19 18:49:07

相關問題