2016-08-30 70 views
0

我已将ControlTemplate更改为TabItem以为选项卡设置关闭按钮。以下是我的XAML:xaml中的事件处理

<ControlTemplate x:Key="TabItemControlTemplate" TargetType="{x:Type TabItem}"> 
    <Border BorderThickness="1" BorderBrush="DarkGray" CornerRadius="0,4,0,0"> 
     <Grid Name="Panel"> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="0.7*" /> 
       <ColumnDefinition Width="0.3*" /> 
      </Grid.ColumnDefinitions> 

      <ContentPresenter x:Name="ContentSite" VerticalAlignment="Center" HorizontalAlignment="Center" ContentSource="Header" Margin="10,2" /> 
      <Button x:Name="closeButton" Background="Transparent" Grid.Column="1" Click="Button_Click" Width="15" Height="15" BorderThickness="0" Margin="0,0,2,0"> 
       <Button.Template> 
        <ControlTemplate TargetType="Button"> 
         <Grid Background="Transparent"> 
          <Ellipse x:Name="backgroundEllipse" /> 
          <Path x:Name="ButtonPath" Margin="3" Stroke="{StaticResource NormalForegroundBrush}" StrokeThickness="1.5" StrokeStartLineCap="Square" StrokeEndLineCap="Square" Stretch="Uniform" VerticalAlignment="Center" HorizontalAlignment="Center"> 
           <Path.Data> 
            <PathGeometry> 
             <PathGeometry.Figures> 
              <PathFigure StartPoint="0,0"> 
               <LineSegment Point="25,25" /> 
              </PathFigure> 
              <PathFigure StartPoint="0,25"> 
               <LineSegment Point="25,0" /> 
              </PathFigure> 
             </PathGeometry.Figures> 
            </PathGeometry> 
           </Path.Data> 
          </Path> 
         </Grid> 

         <ControlTemplate.Triggers> 
          <Trigger Property="IsMouseOver" Value="True"> 
           <Setter TargetName="backgroundEllipse" Property="Fill" Value="{StaticResource HoverBackgroundBrush}" /> 
           <Setter TargetName="ButtonPath" Property="Stroke" Value="{StaticResource HoverForegroundBrush}" /> 
          </Trigger> 
         </ControlTemplate.Triggers> 
        </ControlTemplate> 
       </Button.Template> 
      </Button> 
     </Grid> 
    </Border> 
    <ControlTemplate.Triggers> 
     <Trigger Property="IsSelected" Value="True"> 
      <Setter TargetName="Panel" Property="Background" Value="SkyBlue" /> 
     </Trigger> 
     <Trigger Property="IsSelected" Value="False"> 
      <Setter TargetName="Panel" Property="Background" Value="White" /> 
     </Trigger> 
     <Trigger Property="IsEnabled" Value="false"> 
      <Setter Property="Visibility" Value="Collapsed" /> 
     </Trigger> 
    </ControlTemplate.Triggers> 
</ControlTemplate> 

在上面ControlTemplate,我想处理在XAML本身,即点击事件,使标签项目隐藏这个被点击时。我怎样才能做到这一点?

+0

你想只是将TabItems Visibility设置为Hidden/Collapsed,或者你是否真的想将它从TabControl中移除?无论哪种方式,我不认为只有XAML才能实现,事件处理程序总是以代码的形式编写。 – GregaMohorko

+0

我只想切换可见性 – Abhishek

+1

有两种可能的解决方案:或者使用ToggleButton,就像他在答案中提到的Saman,或者为Button.Clicked触发器创建故事板,并将可见性设置为隐藏在那里。 – GregaMohorko

回答

2

您可以使用togglebutton而不是按钮作为关闭按钮,然后在其上检查触发集tabitem对隐藏/折叠的可见性。

+0

谢谢。你的答案奏效。 – Abhishek