wpf TabControl会自动切换定位点,因为Button会保持其焦点

yyyllmsg  于 2022-11-18  发布在  其他
关注(0)|答案(1)|浏览(195)

我有下面的TabControl

<TabControl x:Name="Tabs">
  <TabItem x:Name="TabItem1" Header="TabItem1" />
  <TabItem x:Name="TabItem2" Header="TabItem2" />
</TabControl>

TabItem1有一个工具栏,里面有一些按钮。TabItem2没有工具栏。
将.NET版本从4.6.1升级到4.8后,我遇到了以下问题:
1.当用户选择TabItem1时,工具栏内的第一个按钮获得焦点。
1.当用户现在选择TabItem2时,* 有时会切换回TabItem1*。这似乎是因为TabItem1中的第一个按钮仍然是焦点。
为什么在.NET 4.6.1中没有发生这种情况?有没有办法避免这个问题?

1sbrub3j

1sbrub3j1#

我找到了一个解决办法,即对所有TabItem使用全局事件处理程序。在事件中,TabItem中的第一个控件(通常是标头)将成为焦点。

private void Application_Startup(object sender, StartupEventArgs e)
{
  EventManager.RegisterClassHandler(typeof(TabItem), Selector.SelectedEvent, new RoutedEventHandler(TabItem_Selected));
}

private void TabItem_Selected(object sender, RoutedEventArgs e)
{
  TabItem item = e.Source as TabItem;
  item?.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
}

但我仍然想知道为什么我会遇到这种奇怪的行为...它应该是没有必要在所有使用这种变通办法。

相关问题