2017-06-23 197 views
1

我喜歡MahApps Metro for WPF的很多東西,還有一些我不太喜歡。其中之一是Metro選項卡風格,所以我試圖調整它。或者寫我自己的,真的。Metro(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" /> 

的TabControl /項目樣式:

<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風格。

我在做什麼錯?這讓我瘋狂,而且我不能動搖我正在做一些既簡單又愚蠢的事情。 :)

(另外,我嘗試添加BasedOn={StaticResource MetroTabItem}到TabItem的風格,但這並不能工作。)

回答

1

這是一種在您引用您的全球/隱性風格的順序。

的風格Resources/CustomControls.xaml

<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> 

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

這做到了。謝謝! –