【发布时间】:2017-06-23 02:40:21
【问题描述】:
我喜欢 MahApps Metro for WPF 的很多地方,但也有一些我不太喜欢的地方。其中之一是 Metro 选项卡样式,因此我正在尝试对其进行调整。或者写我自己的,真的。
我的问题是,虽然我可以创建选项卡控件样式,但我似乎根本无法覆盖 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 的风格确实有效——标签和内容之间存在水平线就足以证明这一点。我还尝试在样式中使用{DynamicResource WhiteBrush}(来自 mahapps),看看它是否找不到 mahapps 资源,但效果很好。但是选项卡本身仍然使用 Metro 风格。
我做错了什么?这让我发疯,我无法摆脱我正在做的事情既简单又愚蠢的感觉。 :)
(另外,我尝试将BasedOn={StaticResource MetroTabItem} 添加到 TabItem 样式中,但也没有用。)
【问题讨论】:
标签: c# wpf xaml mahapps.metro