TabItem ControlTemplate元素可见性

时间:2016-07-25 08:33:27

标签: wpf controltemplate tabitem

我为ControlTemplate定义了TabItem的自定义ContentPresenter,除了Button<Style TargetType="{x:Type TabItem}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="TabItem"> <Border> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="*"/> <ColumnDefinition Width="Auto"/> </Grid.ColumnDefinitions> <ContentPresenter ContentSource="Header"/> <Button Grid.Column="1" Content="x" Visibility="Visible"/> </Grid> </Border> </ControlTemplate> </Setter.Value> </Setter> </Style> 之外我还有{(1)在点击时隐藏标签。

Button

我希望Visible仅适用于某些TabItemsCollapsed适用于其他CollapsedVisible州应该是默认状态,我不了解如何为某些标签设置为<TabItem Header="Normal tab"> <Grid /> </TabItem> <TabItem Header="Closable tab"> <Grid/> </TabItem>

如果标签项类似

Button

我想拥有&#34; Closable标签&#34;显示此Button但显示&#34;正常标签&#34;没有显示这个package main import ( "encoding/gob" "path/to/yourpackage" func init() { gob.Register(&yourpackage.YourStruct{}) } ,怎么能这样做?

1 个答案:

答案 0 :(得分:1)

您可以使用TabItem的{​​{1}}属性来标识其类型,并通过Tag绑定在Button内观看此类型。

RelativeSource

我对<TabControl> <TabControl.Resources> <Style TargetType="{x:Type TabItem}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="TabItem"> <Border BorderThickness="1" BorderBrush="Green" Margin="1"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="*"/> <ColumnDefinition Width="Auto"/> </Grid.ColumnDefinitions> <ContentPresenter ContentSource="Header"/> <Button Grid.Column="1" Content="x"> <Button.Style> <Style TargetType="Button"> <Setter Property="Visibility" Value="Collapsed" /> <Style.Triggers> <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=TabItem}, Path=Tag}" Value="Closable"> <Setter Property="Visibility" Value="Visible" /> </DataTrigger> </Style.Triggers> </Style> </Button.Style> </Button> </Grid> </Border> </ControlTemplate> </Setter.Value> </Setter> </Style> </TabControl.Resources> <TabItem Header="Normal tab"> <Grid /> </TabItem> <TabItem Tag="Closable" Header="Closable tab"> <Grid /> </TabItem> </TabControl> 属性进行了一些编辑,只是为了单独显示标签,这个示例无需工作。