2017-06-23 16 views
1

私はMahApps MetroについてWPFのようなものがたくさんありますが、あまり好きではないものもあります。そのうちの1つはメトロタブスタイルなので、私はそれを微調整しようとしています。または、本当に自分のことを書いてください。メトロ(MahApps)WPF:TabItemのスタイルをオーバーライド

私の問題は、タブコントロールスタイルを作成することができますが、私はTabItemスタイルをオーバーライドすることができないということです。私はシンプルに始めました:そこに何があるかにかかわらず、赤色の静的テキスト。しかし、私はそれを得ることさえできません。それはMetroスタイルを使い続けます。

(バインディングはCaliburn.Microを介してである。)

ShellView.xaml:

<TabControl Style="{StaticResource TabControlStyle}" DockPanel.Dock="Top" 
    x:Name="AvailableTabs"> 
    <TabControl.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding DisplayName}" /> 
     </DataTemplate> 
    </TabControl.ItemTemplate> 
</TabControl> 

内部App.xaml:

<ResourceDictionary Source="Resources/CustomControls.xaml" /> 

<!-- MahApps.Metro resource dictionaries. Make sure that all file names are Case Sensitive! --> 
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" /> 
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" /> 
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colors.xaml" /> 
<!-- Accent and AppTheme setting --> 
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/Blue.xaml" /> 
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseLight.xaml" /> 

タブコントロール/商品スタイル

<Style TargetType="TabItem" BasedOn="{StaticResource MetroTabItem}"> 
    <Setter Property="Background" Value="Red" /> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="TabItem"> 
       <TextBlock Text="Tab" /> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

結果: TabControl

のTabControlのスタイルは間違いなく働いている - タブとコンテンツの間に水平線の存在は、その十分な証拠です。私はまた、{DynamicResource WhiteBrush}(mahappsから)スタイルを使用して試したところ、mahappsリソースを見つけることができなかったかどうかを確認しましたが、うまくいきました。しかしタブ自体はまだMetroスタイルを使用しています。

私は間違っていますか?これは私を夢中にさせている、私は単純で愚かな何かをやっているという気持ちを揺さぶることはできない。 :)

は(また、私はのTabItemスタイルに BasedOn={StaticResource MetroTabItem}を追加しようと、それはどちらか動作しませんでした。)

答えて

1

それはあなたがあなたのグローバル/暗黙的スタイルを参照するためです。それが最初に参照されるよう

スタイル

<Style TargetType="TabItem" BasedOn="{StaticResource MetroTabItem}"> 
    <Setter Property="Background" Value="Red" /> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="TabItem"> 
       <TextBlock Text="Tab" Padding="10" Margin="1,0" 
          Background="{TemplateBinding Background}" /> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

Resources/CustomControls.xamlには、MahAppsスタイルによって隠されています。それをしなかった

App.xaml

<ResourceDictionary.MergedDictionaries> 
    <!-- MahApps.Metro resource dictionaries. Make sure that all file names are Case Sensitive! --> 
    <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" /> 
    <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" /> 
    <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colors.xaml" /> 
    <!-- Accent and AppTheme setting --> 
    <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/Blue.xaml" /> 
    <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseDark.xaml" /> 
    <!-- Last in line will prevail --> 
    <ResourceDictionary Source="Resources/CustomControls.xaml" /> 
</ResourceDictionary.MergedDictionaries> 
+0

:それは他の方法で回避する必要があります。ありがとう! –

関連する問題