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以再次显示它们。