2015-11-11 63 views
2

我正在爲TabControl創建新樣式,包括項目的新ItemContainerStyle。新的樣式工作正常,除了我需要使用樣式時添加功能到ItemContainerStyle的可能性。詳細說明這是標題屬性覆蓋樣式的特定屬性

<TabControl x:Name="myTabControl" SelectionChanged="myTabControl_SelectionChanged"> 
      <TabControl.ItemContainerStyle> 
       <Style TargetType="TabItem"> 
        <Setter Property="Header" Value="{Binding Title}"></Setter> 
       </Style> 
      </TabControl.ItemContainerStyle> 
     </TabControl> 

它的工作正常。但它完全覆蓋了風格。 BasedOn屬性會有所幫助,但是我無法訪問ItemContainerStyle的鍵,因爲它嵌入在TabControls的樣式中。我怎樣才能簡單地更新樣式屬性而不會完全覆蓋樣式?

謝謝

+0

你動態地創建標籤的項目? –

回答

1

在WPF風格與css相比有一些差異。在Wpf中,他們完全不依賴於繼承,this is the basic document on how styles work。因此,如果沒有爲您提供密鑰,我認爲使用BasedOn繼承時您運氣不佳。

但是,Microsoft確實在Visual Studio Blend中提供了一個有用的實用工具。在對象和時間軸窗口中,右鍵單擊然後選擇「編輯樣式」,這將爲您完成所有繁重工作。如果您將對樣式進行很多細微的修改,我建議您製作一份副本,併爲其指定一個Key,然後使用BasedOn屬性進行所需的小修改。

我希望這會有所幫助。

+0

謝謝馬特。我希望我能擺脫這樣做。這是我過去做的。但是花費了很多額外的代碼。由於我想爲所有TabControl創建一個全局樣式,我現在必須在我的ItemContainers中添加一些額外的樣式才能獲取文本。 – msedi

0

您可以基於你對隱式應用默認的款式風格:

<Style TargetType="TabItem" BasedOn="{StaticResource {x:Type TabItem}}"> 
+0

Hi Fratyx。我試過這一個,但由於類型TabItem沒有被覆蓋,但TabControl的「主」風格內的TabItem不起作用。 – msedi