覆盖Mahapps Metro风格为我标题Tabitem

时间:2014-04-29 23:40:28

标签: c# wpf xaml mvvm mahapps.metro

我正在使用WPF和MVVM。我安装了Mahapps Metro,这个nuget包为我的应用程序提供了所有样式。

我制作了一个TabControl,但Mahapps用于每个TabItem标题的FontSize对我的应用来说非常大。

我需要创建一个StaticResource来更改TabItem中标题的FontSize,而不删除Mahapps提供的其他属性。

2 个答案:

答案 0 :(得分:13)

将以下代码放在窗口的资源中:

<Window
......
xmlns:mah="http://metro.mahapps.com/winfx/xaml/controls"
......
>
<Window.Resources>
        <Style x:Key="MenuLevel2" BasedOn="{StaticResource MetroTabItem}" TargetType="{x:Type TabItem}">
            <Setter Property="mah:ControlsHelper.HeaderFontSize" Value="24"></Setter>
        </Style>
<Window.Resources>

查看源代码[https://github.com/MahApps/MahApps.Metro/blob/master/MahApps.Metro/Styles/Controls.TabControl.xaml,在第158行],您可以看到程序员设置此属性时出现了一个特殊异常,因为该字体位于Content Presenter内的控件模板中。设置ControlsHelper.HeaderFontSize属性更容易。

答案 1 :(得分:2)

如上面的答案所示,将以下代码放在Window.Resources

    <Window
......
xmlns:mah="http://metro.mahapps.com/winfx/xaml/controls"
......
>
<Window.Resources>
        <Style x:Key="MenuLevel2" BasedOn="{StaticResource MetroTabItem}" TargetType="{x:Type TabItem}">
            <Setter Property="mah:ControlsHelper.HeaderFontSize" Value="15"></Setter>
        </Style>
<Window.Resources>

在TabItem部分添加样式详细信息。

<TabItem Header="Dimension Alias" Style="{DynamicResource MenuLevel2}">

这对我有用。