特定のイベントでタブの色を変えたい。プロジェクトの ISL ファイルには、次のものが含まれています。
<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 が設定されていないと思います。色スタイルの優先順位に慣れていないだけです。
では、スタイルを変更するにはどうすればよいでしょうか。
-- 2012 年 4 月 17 日編集 --
記録として、以下の <styleSet> および <styles> の上に修正が追加されました。
<componentStyles>
<componentStyle name="UltraTabbedMdiManager" resolutionOrder="ControlThenApplication">
<properties>
<property> name="ViewStyle" colorCategory="{Default}">Office2003</property>
</properties>
</componentStyle>
</componentStyles>
AppStylist を使用したくない場合に備えて