如何向左移动WPF选项卡标题?

时间:2012-12-17 07:23:30

标签: wpf tabcontrol

我计划将我的徽标添加到我的wpf项目中。我在我的项目中使用tabControl,因为我想添加我的徽标,我希望向左移动第一个Tab标题,以便我的徽标可以适合(如第二张图所示)。任何人都知道如何移动标题页位置?

我的项目现在:

enter image description here

移动我的标题页后,我的项目将是这样的:

enter image description here

p / s:我是第二张图片,我不会从编码中获取它。

2 个答案:

答案 0 :(得分:0)

您可以更改TabControl的模板

1.使用这种风格:http://msdn.microsoft.com/en-us/library/ms754137%28v=vs.85%29.aspx
2.在网格中添加三列 3.将HeaderPanel的Grid.Column设置为“1”

<Grid KeyboardNavigation.TabNavigation="Local">
      <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
      </Grid.RowDefinitions>
      <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>    //*
        <ColumnDefinition Width="Auto"/>     //*
        <ColumnDefinition Width="*"/>    //*
      </Grid.ColumnDefinitions>     //*
      <TabPanel 
        Name="HeaderPanel"
        Grid.Row="0"

        Grid.Column="1"   //*

        Panel.ZIndex="1" 
        Margin="0,0,4,-1" 
        IsItemsHost="True"
        KeyboardNavigation.TabIndex="1"
        Background="Transparent" />
      <Border 
        Name="Border" 
        Grid.Row="1" 
        Background="{StaticResource WindowBackgroundBrush}" 
        BorderBrush="{StaticResource SolidBorderBrush}" 
        BorderThickness="1" 
        CornerRadius="2" 
        KeyboardNavigation.TabNavigation="Local"
        KeyboardNavigation.DirectionalNavigation="Contained"
        KeyboardNavigation.TabIndex="2" >
        <ContentPresenter 
          Name="PART_SelectedContentHost"
          Margin="4"
          ContentSource="SelectedContent" />
      </Border>
    </Grid>

答案 1 :(得分:0)

Ramin的解决方案非常有效。 关于使用该方法的其他几点说明

首先,您需要向Border添加ColumnSpan,以便主Tab内容扩展到控件的整个宽度:

<Border Name="Border" 
        Grid.Row="1" Grid.ColumnSpan="3"
        ...

其次,这些ColumnDefinitions:

<Grid.ColumnDefinitions>
    <ColumnDefinition Width="*"/>    
    <ColumnDefinition Width="Auto"/> 
    <ColumnDefinition Width="*"/>    
  </Grid.ColumnDefinitions>

居中标签标题。如果您只是想让第一个向右移动足够的徽标或其他东西,那么为第一列定义指定不同的宽度。

我使用这些列定义编写了一个快速示例:

<Grid.ColumnDefinitions>
    <!-- the width to shift the first tab rightward (i.e., to make room for a logo)-->
    <ColumnDefinition Width="87"/>  
    <ColumnDefinition Width="Auto"/>    
    <ColumnDefinition Width="*"/>   <!-- any extra space goes on the right -->
</Grid.ColumnDefinitions> 

......产生这个:

enter image description here