WPF tabitem定位

Dan*_*iel 3 wpf tabs controls position tabitem

什么是正确的定位方法,例如使用WPF在选项卡控件的左上角和右上角的三个tabitems?

我试图通过改变它的边距将第四个tabitem移到右边,但这不会产生好的结果; 首先,它被缩短,其次,它在选择时无法正确显示.

Hei*_*nzi 5

问题是TabConnel(由TabControl在内部用于布置选项卡)似乎不支持您想要的内容.一个快速的解决方法是用其他东西替换TabPanel,例如DockPanel:

<Window x:Class="Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
    <TabControl>
        <TabControl.Template>
            <ControlTemplate TargetType="TabControl">
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition Height="*"/>
                    </Grid.RowDefinitions>
                    <Border BorderThickness="0,0,1,1" BorderBrush="#D0CEBF" Grid.Row="1">
                        <Border BorderThickness="{TemplateBinding BorderThickness}" 
                                BorderBrush="{TemplateBinding BorderBrush}">
                            <Border Background="{TemplateBinding Background}">
                                <ContentPresenter ContentSource="SelectedContent"/>
                            </Border>
                        </Border>
                    </Border>
                    <DockPanel IsItemsHost="True" LastChildFill="False" Margin="2,2,2,0" />
                </Grid>
            </ControlTemplate>
        </TabControl.Template>

        <TabItem Header="Item 1" />
        <TabItem Header="Item 2" />
        <TabItem Header="Item 3" />
        <TabItem Header="Item 4" DockPanel.Dock="Right" />
    </TabControl>
</Window>
Run Code Online (Sandbox Code Playgroud)

(参考:这是用于设置TabControl样式的MSDN示例的修改版本.)

简单的DockPanel不像TabPanel那样平滑 - 当它们之间切换时,标签"跳"一点,但这可能会让你开始.也许子类化TabPanel并覆盖相关部分会给你一个更准确的结果; 我想这取决于你想付出多少努力.