C# xaml中的事件处理

C# xaml中的事件处理,c#,wpf,xaml,C#,Wpf,Xaml,我修改了TabItem的ControlTemplate,使其具有用于选项卡的关闭按钮。以下是我的XAML: <ControlTemplate x:Key="TabItemControlTemplate" TargetType="{x:Type TabItem}"> <Border BorderThickness="1" BorderBrush="DarkGray" CornerRadius="0,4,0,0"> <Grid Name="Pan

我修改了
TabItem
ControlTemplate
,使其具有用于选项卡的关闭按钮。以下是我的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本身中处理click事件,也就是说,在单击时隐藏tab项。如何实现这一点?

您可以使用togglebutton而不是button作为关闭按钮,然后在其选中的触发器选项卡上将项目可见性设置为隐藏/折叠。

您可以使用togglebutton而不是button作为关闭按钮,然后选中它,触发器将TabItems visibility设置为hidden/collapsed。

您只想将TabItems visibility设置为hidden/collapsed,还是要将其从TabControl中删除?不管是哪种方式,我认为这都不可能在XAML中实现,事件处理程序总是用代码编写的。我只想切换可见性有两种可能的解决方案:要么使用切换按钮,就像Saman在回答中建议的那样,或者为按钮创建一个故事板。单击触发器并将可见性设置为隐藏在那里。完全获取您所拥有的,但是a)(per@Saman)将按钮更改为切换按钮,b)将其添加到
ToggleButton
IsChecked=“{Binding IsEnabled,RelativeSource={RelativeSource TemplatedParent}”
<代码>已启用然后控制其可见性。将
IsEnabled
设置回true以再次显示它们。您只想将TabItems可见性设置为隐藏/折叠,还是想将其从TabControl中删除?不管是哪种方式,我认为这都不可能在XAML中实现,事件处理程序总是用代码编写的。我只想切换可见性有两种可能的解决方案:要么使用切换按钮,就像Saman在回答中建议的那样,或者为按钮创建一个故事板。单击触发器并将可见性设置为隐藏在那里。完全获取您所拥有的,但是a)(per@Saman)将按钮更改为切换按钮,b)将其添加到
ToggleButton
IsChecked=“{Binding IsEnabled,RelativeSource={RelativeSource TemplatedParent}”
<代码>已启用然后控制其可见性。将
IsEnabled
设置回true以再次显示它们。