1

特定のイベントでタブの色を変えたい。プロジェクトの 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 を使用したくない場合に備えて

4

1 に答える 1

1

これを行ったことがないので、これをテストする必要がありますが、ISL ファイルで 2 つの StyleSet を定義してみることができると思います。(スタイル エクスプローラー -> 追加)

最初にデフォルトのスタイルを設定し、2 番目に TabHeader のスタイルのみを定義します。別のスタイルが必要な場合は、StyleSetName を ISL ファイルで使用可能な 2 番目の StyleSet に設定するだけです。何らかのリフレッシュが必要かどうかはわかりません。

また、設計時に定義された外観で apptylist の設定をオーバーライドする場合は、AppStylistのResolutionOrder"Component Role Settings->Infragistics Components->UltraTabControl->ResolutionOrder"を確認する必要があります。ResolutionOrder に移動する デフォルトではApplicationThenControl、AppStyling プロパティの値がすべてのコントロール設定よりも優先されるように設定されています。対応する外観プロパティ。あなたの場合、ControlThenApplicationコントロールに設定されたプロパティが優先されるように変更する必要があります。

于 2012-04-16T19:49:28.123 に答える