C# 在tabitem标题内的按钮单击事件期间发送Tab
我试图在单击tabitem标题内的按钮(TabCloseButton)时删除该选项卡。但我作为父母也拿不到账单。有人能帮我找到如何将选项卡传递给click方法吗。任何代码示例都会有所帮助C# 在tabitem标题内的按钮单击事件期间发送Tab,c#,wpf,xaml,C#,Wpf,Xaml,我试图在单击tabitem标题内的按钮(TabCloseButton)时删除该选项卡。但我作为父母也拿不到账单。有人能帮我找到如何将选项卡传递给click方法吗。任何代码示例都会有所帮助 <TabControl Name="ConnectionsTab" BorderThickness="0" Background="White"> <TabControl.Resources> <Style TargetT
<TabControl Name="ConnectionsTab" BorderThickness="0" Background="White">
<TabControl.Resources>
<Style TargetType="{x:Type TabItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TabItem}">
<Grid Background="White">
<Border Name="Border" BorderBrush="#1b9ed2" Margin="6,0,12,0" Background="White">
<ContentPresenter Height="30" x:Name="ContentSite" ContentSource="Header" VerticalAlignment="Bottom" HorizontalAlignment="Center" Margin="5,15,5,-5">
</ContentPresenter>
</Border>
<Button Background="Wheat" BorderBrush="Transparent" Name="TabCloseButton" Click="TabCloseButton_Click" HorizontalAlignment="Right" VerticalAlignment="Bottom" ToolTip="Close" HorizontalContentAlignment="Right" Padding="0">
<materialDesign:PackIcon Kind="Close" Foreground="Gray" HorizontalAlignment="Right"/>
</Button>
</Grid>
<ControlTemplate.Triggers>
...............
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="FontSize" Value="12"/>
</Style>
</TabControl.Resources>
<TabItem Header="Connections" IsSelected="True" TabIndex="0">
<TabItem.Content>
<Grid>
<TextBlock Name="errorMessage" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="Gray" Visibility="Hidden"></TextBlock>
<Grid Name="MainConnectionTab"/>
</Grid>
</TabItem.Content>
</TabItem>
<TabItem Header="machine1"></TabItem>
<TabItem Header="machine2"></TabItem>
</TabControl>
...............
您可以使用一个助手方法,该方法使用VisualTreeHelper
在可视化树中查找父级选项卡项
:
private void TabCloseButton_Click(object sender, RoutedEventArgs e)
{
Button tabCloseButton = (Button)sender;
TabItem parentTab = FindParent<TabItem>(tabCloseButton);
if (parentTab != null)
ConnectionsTab.Items.Remove(parentTab);
}
private static T FindParent<T>(DependencyObject dependencyObject) where T : DependencyObject
{
DependencyObject parent = VisualTreeHelper.GetParent(dependencyObject);
if (parent == null)
return null;
T parentT = parent as T;
return parentT ?? FindParent<T>(parent);
}
private void TabCloseButton\单击(对象发送者,路由目标)
{
按钮选项卡CloseButton=(按钮)发送器;
TabItem parentTab=FindParent(tabCloseButton);
if(parentTab!=null)
ConnectionsTab.Items.Remove(父选项卡);
}
私有静态T FindParent(DependencyObject DependencyObject),其中T:DependencyObject
{
DependencyObject parent=VisualTreeHelper.GetParent(DependencyObject);
如果(父项==null)
返回null;
T parentT=作为T的父项;
返回父母??找到父母(父母);
}