events - 在标准的WPF选项卡控件中,是否有选中的选项卡更改事件

  显示原文与译文双语对照的内容
150 5

在WPF中,是否有一个事件可以用于确定选择选项卡更改时的时间。

我已经经尝试使用 TabControl.SelectionChanged,但在选项卡中的子级选择更改时,它会被激发很多次。

时间:原作者:0个回答

138 2

我将这里绑定到处理程序中,使它的工作:

void TabControl_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
 if (e.Source is TabControl)
 {
//do work when tab is changed
 }
}
原作者:
112 4

如果将 x:Name 属性设置为每个 TabItem,则为:

<TabControl x:Name="MyTab" SelectionChanged="TabControl_SelectionChanged">
 <TabItem x:Name="MyTabItem1" Header="One"/>
 <TabItem x:Name="MyTabItem2" Header="2"/>
 <TabItem x:Name="MyTabItem3" Header="Three"/>
</TabControl>

然后,你可以访问事件中的每个 TabItem:

private void TabControl_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
 if (MyTabItem1.IsSelected)
//do your stuff
 if (MyTabItem2.IsSelected)
//do your stuff
 if (MyTabItem3.IsSelected)
//do your stuff
}
原作者:
102 3

如果你只希望在选择选项卡时发生事件,这是正确的方法:

<TabControl>
 <TabItem Selector.Selected="OnTabSelected"/>
 <TabItem Selector.Selected="OnTabSelected"/>
 <TabItem Selector.Selected="OnTabSelected"/>
 <!-- You can also catch the unselected event -->
 <TabItem Selector.Unselected="OnTabUnSelected"/>
</TabControl>

在你的代码里

 private void OnTabSelected(object sender, RoutedEventArgs e)
 {
 var tab = sender as TabItem;
 if (tab!= null)
 {
//this tab is selected!
 }
 }
原作者:
109 2

你还可以用那个事件。只要检查发送方参数是否是你真正关心的控件,如果是,则运行事件代码。

原作者:
...