2017-05-31 29 views
0

私はMahApps.Metroタブコントロールを使用しています。タブが非アクティブのときにヘッダーテキストのフォント色を変更できるかどうかを知りたい。非アクティブなタブヘッダーのフォントの色を変更します

現在のところ、それはこのようなものです: enter image description here

私が使用して、アクティブなタブのフォントの色を変更することができます。

 <Controls:MetroAnimatedSingleRowTabControl.Resources> 
      <SolidColorBrush x:Key="AccentColorBrush" Color="Red"/> 
     </Controls:MetroAnimatedSingleRowTabControl.Resources> 

enter image description here

しかし、私が非アクティブの色を変更することはできませんよタブ。灰色を他の色に変更したい。たとえば、緑色にすることができます。それを変更することは可能ですか?

答えて

1

MahApps.MetroTabItemtemplateは、それが非アクティブだフォントの色など"GrayNormalBrush"キーを使用して動的なリソースを使用しています。だからあなたがしなければならないのは、あなたの好みのBrushをそのキーのリソースとして提供することだけです。変更の範囲に応じて、ブラシを置くための適切な場所を選択する必要があります。

は、そのリソースの辞書にブラシを入れ、単一TabItem上の非アクティブなブラシを変更するには、単一のTabItem

を変更する:

シングル TabControl

内のすべての TabItemの変更
<TabItem> 
    <TabItem.Resource> 
     <SolidColorBrush x:Key="GrayNormalBrush" Color="Red" /> 
    </TabItem.Resources> 
</TabItem> 

TabItemをすべて修正するにはあなたは「sのデフォルトのスタイルのリソースディクショナリにブラシを入れ、TabControlとしてそのスタイルを置く」TabItemをオーバーライドするのリソース必要がありTabControl

<TabControl> 
    <TabControl.Resources> 
     <!-- It's important to set the BasedOn property so that we 
      override the style rather than redefine it --> 
     <Style TargetType="{x:Type TabItem}" BasedOn="{StaticResource {x:Type TabItem}}"> 
      <Style.Resources> 
       <SolidColorBrush x:Key="GrayNormalBrush" Color="Red" /> 
      </Style.Resources> 
     </Style> 
    </TabControl.Resources> 
</TabControl> 

また、その範囲を広げるために階層をスタイルアップ移動することができます、例えばそのスタイルをWindowのリソースとして入れると、そのウィンドウ内のすべてTabItemが変更されます。この部分全体アプリケーション全体

をすべてTabItemの変更

はちょうどApp.xamlリソースディクショナリにそのスタイルを置くよりも少しトリッキーであることが判明しました。ここでの重要なことは、このスタイルをの後にと定義し、MahApps.Metroが参照されることです。以下のものは、罰金とダンディだったのに対し、私はApp.xamlMahApps.Metro辞書の参照を持っていたし、またそこにそのスタイルを置く私の場合では、最初のTabItemは、すべてのをスタイリングされていません。

トリックはApp.xamlから辞書という、別のファイルに辞書を作成Resources.xamlを言って、そこにそのスタイルを入れて、参照することでした。辞書が参照される順序は、このソリューションが機能するために重要であることに注意してください。

<Application.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" /> 
      <ResourceDictionary Source="Resources.xaml" /> 
      ... 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</Application.Resources> 
+0

ありがとう。それが助けになりました。フォントに他の変更を加えることも可能ですか?選択したタブのヘッダーフォントを太字にします。私はを使ってみましたが、タブのフォントではなくタブの内容のフォントを変更しています。 – ilmenite

関連する問題