有没有办法在TabItem
的标题的右侧放置一些东西(自定义UIElement
),以便标题会考虑它的大小。UIElements放在标题页眉
我觉得他们应该有一个数据模板,但我不知道该读什么或如何查询谷歌。
alt text http://trotsenko.com.ua/files/sample.png
有没有办法在TabItem
的标题的右侧放置一些东西(自定义UIElement
),以便标题会考虑它的大小。UIElements放在标题页眉
我觉得他们应该有一个数据模板,但我不知道该读什么或如何查询谷歌。
alt text http://trotsenko.com.ua/files/sample.png
没有放置在该位置的内容一个简单的方法,但有一个办法。要做到这一点,您必须覆盖TabControl
的默认ControlTemplate
。
大多数系统主题把TabPanel
(其中选项卡)和标签内容的Grid
像这样:
<ControlTemplate TargetType="{x:Type TabControl}">
<Grid KeyboardNavigation.TabNavigation="Local"
SnapsToDevicePixels="true"
ClipToBounds="true">
<Grid.ColumnDefinitions>
<ColumnDefinition x:Name="ColumnDefinition0"/>
<ColumnDefinition x:Name="ColumnDefinition1"
Width="Auto"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition x:Name="RowDefinition0"
Height="Auto"/>
<RowDefinition x:Name="RowDefinition1"
Height="*"/>
</Grid.RowDefinitions>
<TabPanel x:Name="HeaderPanel"
Panel.ZIndex ="1"
KeyboardNavigation.TabIndex="1"
Grid.Column="0"
Grid.Row="0"
Margin="2,2,2,0"
IsItemsHost="true"/>
<Border x:Name="ContentPanel"
BorderThickness="0,0,1,1"
BorderBrush="#D0CEBF"
KeyboardNavigation.TabNavigation="Local"
KeyboardNavigation.DirectionalNavigation="Contained"
KeyboardNavigation.TabIndex="2"
Grid.Column="0" Grid.ColumnSpan="2"
Grid.Row="1">
...
...
...
</Border>
</Grid>
...
</ControlTemplate>
所以你可以另一个ContentControl中添加到网格中,并把它绑定到一个自定义附加属性。请记住,默认的ControlTemplates还有很多控制溢出处理的触发器,除此之外,您必须确保您的其他UI元素不会干扰这种情况。
你应该能够得到这样的事情相当快,不过,如果你没有处理TabControl的方向或溢出:
祝你好运!