带有 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;
}
我有一个设置了加速键的 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;
}