2016-07-25 9 views
1

ContentPresenterButton (클릭 할 때 탭을 숨기기) 외에도 TabItem에 대해 맞춤 ControlTemplate을 정의했습니다.TabItem ControlTemplate 요소 가시성

<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> 

은 내가 ButtonTabItems 및 다른 사람을위한 Collapsed 확실히 Visible되고 싶어요. Collapsed 상태가 기본값이어야하며 특정 탭에 대해 Visible으로 설정하는 방법을 이해할 수 없습니다.

탭 항목

<TabItem Header="Normal tab"> 
    <Grid /> 
</TabItem> 
<TabItem Header="Closable tab"> 
    <Grid/> 
</TabItem> 

처럼 나는이 Button하지만 "일반 탭"을 보여주는 될 수있는 "닫기 가능한 탭을"갖고 싶어이 Button 표시되지, 어떻게 수행 할 수 있습니다?

답변

1

TabItemTag 속성을 사용하여 유형을 식별하고이 유형을 ButtonRelativeSource 바인딩으로 볼 수 있습니다.

<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> 

나는이 예제가 작동하려면 그들이 필요하지 않습니다, Border 단지 시각적 별도의 탭으로 약간의 속성을 편집했다.