2012-04-16 53 views
1

我想使某個事件的選項卡顏色發生變化。該項目的ISL文件包含以下內容:如何更改已分配給它的樣式的mdiTab的顏色? (Infragistics)

<styleLibrary> 
    <styleSets defaultStyleSet="Default"> 
    <styleSet name="Default" viewStyle="Standard"> 
     ... 
     <styles> 
     ... 
     <style role="TabItem"> 
      <states> 
      <state name="Normal"> 
       <resources> 
       <name>Header</name> 
       </resources> 
      </state> 

      <state name="HotTracked"> 
       <resources> 
       <name>HeaderHotTrack</name> 
       </resources> 
      </state> 

      <state name="Active"> 
       <resources> 
       <name>HeaderActive</name> 
       </resources> 
      </state> 
      ... 
      </states> 
     </style> 
     </styles> 
    </styleSet> 
    <resources> 
    ... 
    <resource name="Header" backColor="White" foreColor="Black" backColor2="255, 152, 53" backGradientStyle="Vertical" /> 

    <resource name="HeaderActive" backColor="255, 237,175" foreColor="Black" backColor2="255, 127, 0" backGradientStyle="Vertical" /> 

    <resource name="HeaderHotTrack" backColor="25, 237, 175" foreColor="White" backColor2="255,127, 0" backGradientStyle="Vertical" /> 

    <resource name="HeaderHasUpdates" backColor="Green" foreColor="Black" backColor2="White" backGradientStyle="Vertical" /> 
    ... 
    </resources> 
</styleLibrary> 

當節目開始時,它裝有:

Infragistics.Win.AppStyling.StyleManager.Load()

當選項卡選中時,選項卡將被着色爲名爲「HeaderActive」的資源。在某個觸發器中,我希望它切換到名爲「HeaderHasUpdates」的資源。我現在有這不工作是這樣的(其中mdiTab是Infragistics.Win.UltraWinTabbedMdi.MdiTab):

mdiTab.Settings.TabAppearance.StyleResourceName =「HeaderHasUpdates」

如果我刪除所有的資源除了「HeaderHasUpdates」之外,forecolor實際上確實會發生變化,這使我認爲還有另一個地方正在設置顏色,並且在那個地方,foreColor未被設置。我只是不熟悉顏色風格的優先級。

那麼我能做些什麼來改變風格?

- - 編輯2012/4/17

根據記錄,修復在下面的下<樣式集>及以上<風格>補充說:

<componentStyles> 
    <componentStyle name="UltraTabbedMdiManager" resolutionOrder="ControlThenApplication"> 
    <properties> 
     <property> name="ViewStyle" colorCategory="{Default}">Office2003</property> 
    </properties> 
    </componentStyle> 
</componentStyles> 

萬一你沒不想使用AppStylist

回答

1

從來沒有這樣做,所以這需要測試,但我認爲你可以嘗試在你的ISL文件中定義兩個StyleSet。 (樣式瀏覽器 - >添加)

在第一個設置您的默認樣式,在第二個您只定義TabHeader的樣式。 當您需要不同的樣式時,只需將StyleSetName設置爲您的ISL文件中可用的第二個樣式集。不知道是否需要某種更新。

此外,如果你想在設計時定義出場覆蓋從appstylist的設置,您就需要檢查ResolutionOrder在AppStylist 轉到"Component Role Settings->Infragistics Components->UltraTabControl->ResolutionOrder" 的ResolutionOrder是,默認情況下,設置爲ApplicationThenControl這 手段AppStyling屬性值優先於相應外觀屬性的任何控件 設置。在你的情況下,你應該將 更改爲ControlThenApplication,因此在 上設置的屬性優先。

+0

嗯,這很有趣:我改變了ResolutionOrder。它確實允許我使用「Settings.TabAppearance.BackColor」或「Settings.TabAppearance.StyleResourceName」來設置標籤顏色。但是,當我選擇不同的選項卡時,新顏色纔會顯示。 – BCarpe 2012-04-16 20:56:09

+1

除TabAppearance外還有一個ActiveTabAppearance,當選中該選項卡時會使用這個選項。 – alhalama 2012-04-16 22:23:46

+0

完美!謝謝。 – BCarpe 2012-04-17 13:12:38

相關問題