MahApps.MetroTabItem
templateは、それが非アクティブだフォントの色など"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.xamlにMahApps.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>
ありがとう。それが助けになりました。フォントに他の変更を加えることも可能ですか?選択したタブのヘッダーフォントを太字にします。私は を使ってみましたが、タブのフォントではなくタブの内容のフォントを変更しています。 –
ilmenite