2016-10-23 29 views
4

當我使用TabControl對象開發WPF應用程序時遇到問題。我試圖調試並發現問題,最後我明白了,但是我沒有找到任何解決方法。這裏是一些解釋:爲什麼我的樣式的ToggleButton不能在TabControl的第二個選項卡上工作?

我用這個數據網格過濾庫(here is a codeproject url),這是最好的(從我的角度來看)。我想用谷歌材質設計主題對其進行定製,並更改一些圖形功能,例如在數據網格的第一個標籤頁眉中使用切換按鈕來隱藏/顯示過濾選項。

我創建了一個用戶控件,並在其中放置了我的自定義數據網格。然後我將該控件嵌入到tabItem中。當我將此控件設置爲第一個tabItem時,一切正常。但是,當我將用戶控件更改爲其他tabItem時,切換按鈕不起作用。

這裏是我的主窗口的XAML代碼,沒有工作:

<TabControl x:Name="tabControl"> 
     <TabItem Header="1'st Tab"> 
      <ContentControl DataContext="{Binding Path=DataContext, RelativeSource={RelativeSource AncestorType={x:Type Window}}}"> 
       <Button Content="Do no thing"></Button> 
      </ContentControl> 
     </TabItem> 
     <TabItem Header="2'nd Tab"> 
      <ContentControl DataContext="{Binding Path=DataContext, RelativeSource={RelativeSource AncestorType={x:Type Window}}}"> 
       <local:UserControl1/> 
      </ContentControl> 
     </TabItem> 
</TabControl> 

需要注意的是,如果我改變的TabItems的順序,效果很好。有沒有人有建議如何解決這個問題? Here is my sample project code on Github

Control was placed in the first tab Control was placed in the other tab

編輯:今天,我測試了「WPF督察」應用程序查找視覺和邏輯樹的結構。這種行爲太奇怪了,因爲當我將「WPF Inspector」附加到我的應用程序中時,所有事情都開始奏效。下面GIF是我做過什麼:

Strange behavior GIF

+0

歡迎SO!我改變了你的問題的標題。請參閱[幫助頁面](http://stackoverflow.com/help/tagging)以獲知是否應在問題標題中使用標籤。您還應該向我們提供[mcve],而不僅僅是發佈指向外部代碼的鏈接。 – dymanoid

+0

這兩個代碼沒有區別。您應該只更改TabControl中TabItem的順序。不過,我會添加一些代碼行。我很感激你的報價。 – Alireza

回答

1

當使用一個數據對象一個ContentControl,在你的情況下,它的數據上下文,你綁定Content屬性的數據對象,並指定DataTemplate屬性。在這種情況下,DataTemplate中的內容將其DataContext設置爲您的數據對象。

這裏是工作示例:

<TabControl x:Name="tabControl"> 
     <TabItem Header="1'st Tab"> 
      <ContentControl Content="{Binding .}"> 
       <ContentControl.ContentTemplate> 
        <DataTemplate> 
         <Button Content="Do no thing"></Button> 
        </DataTemplate> 
       </ContentControl.ContentTemplate> 
      </ContentControl> 
     </TabItem> 
     <TabItem Header="2'nd Tab"> 
      <ContentControl Content="{Binding .}"> 
       <ContentControl.ContentTemplate> 
        <DataTemplate> 
         <local:UserControl1/> 
        </DataTemplate> 
       </ContentControl.ContentTemplate> 
      </ContentControl> 
     </TabItem> 
    </TabControl> 
+0

我感謝你的幫助。我的問題解決了。 – Alireza

相關問題