首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >标签控制平台(WPF)中的MakingTabItems

标签控制平台(WPF)中的MakingTabItems
EN

Stack Overflow用户
提问于 2011-11-25 01:04:45
回答 2查看 2.7K关注 0票数 0

我的WPF应用程序中有一个tabControl。我想让选项卡项flat.When,我将鼠标悬停在它们上面,它们不能改变。

你能帮我解决这个问题吗?

EN

回答 2

Stack Overflow用户

发布于 2011-11-25 01:21:45

不知道这是否是您所需要的,但是您可以将此数据模板和样式添加到您的资源字典中,以使用平面样式格式化TabControl……

代码语言:javascript
复制
    <ControlTemplate x:Key="TabItemTemplate" TargetType="{x:Type TabItem}">
    <Border Cursor="Hand" x:Name="tab" Background="White" BorderThickness="1,1,1,0" BorderBrush="Black" Padding="5">
        <Grid>
            <ContentPresenter   x:Name="contentPresenter" ContentSource="Header"
                                TextBlock.Foreground="Black"
                                VerticalAlignment="Center"
                                HorizontalAlignment="Left"/>
        </Grid>
    </Border>
    <ControlTemplate.Triggers>
        <Trigger Property="IsSelected" Value="False">
            <Setter TargetName="tab" Property="Background" Value="Gray"/>
            <Setter TargetName="tab" Property="BorderBrush" Value="Black"/>
        </Trigger>
        <MultiTrigger>
            <MultiTrigger.Conditions>
                <Condition Property="IsSelected" Value="False" />
                <Condition Property="IsMouseOver" Value="True"/>
            </MultiTrigger.Conditions>
            <MultiTrigger.Setters>
                <Setter TargetName="tab" Property="BorderBrush" Value="White"/>
                <Setter TargetName="tab" Property="BorderThickness" Value="1,1,1,0"/>
            </MultiTrigger.Setters>
        </MultiTrigger>
    </ControlTemplate.Triggers>
</ControlTemplate>

<Style TargetType="{x:Type TabControl}">
    <Setter Property="Background" Value="White"/>
    <Setter Property="BorderBrush" Value="Black"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type TabControl}">
                <Grid ClipToBounds="true" SnapsToDevicePixels="true" KeyboardNavigation.TabNavigation="Local">
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition Height="*"/>
                    </Grid.RowDefinitions>
                    <TabPanel x:Name="HeaderPanel" IsItemsHost="true" Margin="2,2,2,0" Grid.Row="0" KeyboardNavigation.TabIndex="1" Panel.ZIndex="1"/>
                    <Border x:Name="ContentPanel" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" KeyboardNavigation.DirectionalNavigation="Contained" Grid.Row="1" KeyboardNavigation.TabIndex="2" KeyboardNavigation.TabNavigation="Local">
                        <ContentPresenter x:Name="PART_SelectedContentHost" ContentSource="SelectedContent" Margin="{TemplateBinding Padding}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
                    </Border>
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
<Style TargetType="{x:Type TabItem}">
    <Setter Property="Template" Value="{StaticResource TabItemTemplate}" />
</Style>
票数 2
EN

Stack Overflow用户

发布于 2011-11-25 01:33:14

既然你想让TabItem变得扁平化,你所需要做的就是从TabItem的默认ControlTemplate中删除触发器,这些触发器负责给你的TabItem提供交互控制的外观。试一下这个样本,希望这是你想要的-

代码语言:javascript
复制
<Grid>
    <TabControl>
        <TabControl.Resources>
            <Style TargetType="TabItem">
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="TabItem">
                            <Grid SnapsToDevicePixels="True">
                                <Border BorderThickness="1,1,1,0" Padding="{TemplateBinding Control.Padding}" BorderBrush="{TemplateBinding Border.BorderBrush}"
                                        Background="{TemplateBinding Panel.Background}" Name="Bd">
                                    <ContentPresenter RecognizesAccessKey="True" Content="{TemplateBinding HeaderedContentControl.Header}"
                                                      ContentTemplate="{TemplateBinding HeaderedContentControl.HeaderTemplate}"
                                                      ContentStringFormat="{TemplateBinding HeaderedContentControl.HeaderStringFormat}" 
                                                      ContentSource="Header" Name="Content" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
                                                      SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}" />
                                </Border>
                            </Grid>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </TabControl.Resources>
        <TabItem Content="test1" Header="test1"/>
        <TabItem Content="test2" Header="test2"></TabItem>
        <TabItem Content="test3" Header="test3"></TabItem>
    </TabControl>
</Grid>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8260477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档