带有 WebBrowser 控件的 WPF TabControl 加速键

WPF TabControl acceleration keys with WebBrowser control

我有一个设置了加速键的 WPF TabControl - 因此用户可以通过点击 A、B、C 和 D(无需按 Alt!)来切换到任何选项卡。
第三个选项卡包含 WebBrowser,如果用户在此 Web 浏览器的字段中键入与 Tab 的加速键一致的任何字母,它会切换到另一个选项卡,而不是在 Google 搜索字段中键入:

有什么办法可以避免这种情况吗?

找到一个简单的解决方案。
AccessKeyPressed 处理程序附加到所有 TabItems 并仅当我们从 TabItem 切换到 header "Tab_B".

时才更改 EventArgs 范围
<TabControl>
    <TabItem Header="Tab_A" AccessKeyManager.AccessKeyPressed="TabItem_AccessKeyPressed"/>
    <TabItem Header="Tab_B" AccessKeyManager.AccessKeyPressed="TabItem_AccessKeyPressed">
        <WebBrowser Source="http://google.com"  />
    </TabItem>
    <TabItem Header="Tab_C" AccessKeyManager.AccessKeyPressed="TabItem_AccessKeyPressed"/>
    <TabItem Header="Tab_D" AccessKeyManager.AccessKeyPressed="TabItem_AccessKeyPressed"/>
</TabControl>

处理程序:

private void TabItem_AccessKeyPressed(object sender, AccessKeyPressedEventArgs e)
{
    var src = ((sender as TabItem)?.Parent as TabControl)?.SelectedItem as TabItem;
    if (src?.Header as string == "Tab_B")
        e.Scope = src;
}