Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Metro(MahApps)WPF:覆盖选项卡项样式_C#_Wpf_Xaml_Mahapps.metro - Fatal编程技术网

C# Metro(MahApps)WPF:覆盖选项卡项样式

C# Metro(MahApps)WPF:覆盖选项卡项样式,c#,wpf,xaml,mahapps.metro,C#,Wpf,Xaml,Mahapps.metro,对于WPF的MahApps Metro,我有很多喜欢的地方,也有一些我不太喜欢的地方。其中之一是Metro标签样式,所以我正在尝试调整它。或者写我自己的,真的 <Style TargetType="TabItem" BasedOn="{StaticResource MetroTabItem}"> <Setter Property="Background" Value="Red" /> <Setter Property="Template">

对于WPF的MahApps Metro,我有很多喜欢的地方,也有一些我不太喜欢的地方。其中之一是Metro标签样式,所以我正在尝试调整它。或者写我自己的,真的

<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>
我的问题是,虽然我可以创建选项卡控件样式,但我似乎根本无法覆盖TabItem样式。我已经开始简单:只是红色,静态文本,不管有什么。但我甚至不能做到这一点。它一直使用地铁风格

<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>
(通过Caliburn.Micro进行绑定。)

<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>
ShellView.xaml:

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

内部App.xaml:

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

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

<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>
结果:

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

<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>
我做错了什么?这让我快发疯了,我无法摆脱这样一种感觉:我正在做一件既简单又愚蠢的事情

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

(另外,我尝试将
BasedOn={StaticResource MetroTabItem}
添加到TabItem样式中,但也不起作用。)

这是引用全局/隐式样式的顺序

<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>
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" />
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
<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>