Hit*_*shP 10 wpf tabcontrol selecteditem
我有一个WPF TabControl,TabItem标题中有几个按钮.我想在单击一个带标题的按钮时更改所选的选项卡.这是一段代码:
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid>
<TabControl>
<TabItem Content="Item 1 Content">
<TabItem.Header>
<StackPanel Orientation="Vertical">
<TextBlock FontSize="14" FontWeight="Bold" Text="Item1"/>
<StackPanel Orientation="Horizontal">
<Button Content="Action 1"/>
<Button Content="Action 2"/>
</StackPanel>
</StackPanel>
</TabItem.Header>
</TabItem>
<TabItem Content="Item 2 Content">
<TabItem.Header>
<StackPanel Orientation="Vertical">
<TextBlock FontSize="14" FontWeight="Bold" Text="Item2"/>
<StackPanel Orientation="Horizontal">
<Button Content="Action 1"/>
<Button Content="Action 2"/>
</StackPanel>
</StackPanel>
</TabItem.Header>
</TabItem>
</TabControl>
</Grid>
</Page>
Run Code Online (Sandbox Code Playgroud)
此示例显示了几个Tabs.如果单击标题背景,则选择选项卡,但是,如果单击按钮,则不会选择选项卡.我希望按钮接受点击,但我也希望选中与该按钮对应的选项卡.有人可以帮忙吗?
谢谢,Hitesh
rmo*_*ore 10
我们可以使用事件路由来完成此操作. RoutedEvents(例如Click)会冒泡元素树,直到处理事件.因此,您实际上已经在选项卡项上收到了Click事件,我们还没有做任何事情.我们可以创建一个事件来处理按钮单击选项卡项,如下所示:
<TabItem Content="Item 1 Content" ButtonBase.Click="TabItem_Click">
Run Code Online (Sandbox Code Playgroud)
但是,我们必须在每个选项卡上设置它,所以我们可以在TabControl中为TabItem创建一个样式,如下所示:
<TabControl>
<TabControl.ItemContainerStyle>
<Style TargetType="{x:Type TabItem}">
<EventSetter Event="ButtonBase.Click"
Handler="TabItem_Click" />
</Style>
</TabControl.ItemContainerStyle>
....
</TabControl>
Run Code Online (Sandbox Code Playgroud)
现在,在我们的事件处理程序中,我们可以选择已单击的选项卡:
private void TabItem_Click(object sender, RoutedEventArgs e)
{
Trace.WriteLine("TabItemClicked");
((TabItem)sender).IsSelected = true;
e.Handled = true;
}
Run Code Online (Sandbox Code Playgroud)
小智 5
我对上述问题做一个小的RND现在,并能达到上述以不同的方式,但它仍然将是巨大的,如果ü可以帮助我以U HV执行方式.
在列表框的selectionchanged事件上,我只是将选项卡控件的selecteditem更改为我想要的那个ie
Tbctrl.SelectedItem = (TabItem)Tbctrl.FindName("item2");
Run Code Online (Sandbox Code Playgroud)
这里Tbctrl是tabcontrol的名称,item2是tabcontrol中tabitem的名称,它包含上面提到的文本框.
问候,
Dhaval