Lync有一些热键/快捷键,用于更改ContactList控件中的选项卡。这些热键是'g','s'和'r'。当我按下任何这些键同时将HTML输入控件聚焦在任何网页上的WebBrowser内时,按键将转到ContactList控件而不是WebBrowser控件。 键入浏览器外部的控件(例如WPF TextBox控件)时,按键不会被盗。
将以下代码粘贴到MainWindow.xaml中的Window元素中
<Window...
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<controls:ContactList Name="contactList1" Grid.Column="0" />
<WebBrowser Grid.Column="1" Source="http://www.google.com" />
</Grid>
按“r”,“g”或“s”键进入谷歌搜索框,注意按键如何转到lync控件而不是搜索框。任何其他键都可以正常工作。
我试图阻止关键事件冒泡到ContactList控件。但是我没有取得多大成功。
答案 0 :(得分:1)
在这里找到答案:AccessKey Pressed Event Raised when pressing access key without ALT
出现此问题的原因是WPF不需要按住alt以使AccessKeys工作。 WinForms的用途。 在这种情况下,在WebBrowser中按“g”,“s”或“r”会聚焦ClientControl,但我只希望在按住alt时发生这种情况。我不知道为什么这个问题似乎只发生在WebBrowser上。
来自msdn链接:
我们在标签上定义了一个访问键,它将焦点放在a上 文本框。
我们在同一个用户控件上有第二个只读文本框。
在只读文本框内单击并按下访问键时 没有ALT(例如L而不是ALT + L),焦点改变就完成了 反正。
是否可以禁用此行为,即是否可以 确保访问键仅在与其一起按下时才起作用 ALT?
以下xaml显示了该问题:
<Window x:Class="Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
SizeToContent="Height"
Width="300" WindowStartupLocation="CenterScreen">
<StackPanel Orientation="Vertical">
<TextBox IsReadOnly="True" Text="ReadOnly - give focus and press l" />
<Label Content="_Label:" Target="{Binding ElementName=box}"/>
<TextBox x:Name="box" />
</StackPanel>
</Window>
菜单和工具栏menmonics无需按Alt键即可工作。我们决定 我们将在所有情况下都有统一的行为,因此访问关键工作 按下Alt键。
据我所知,这与表格不符,我们会 请考虑此问题并更改下一版本中的行为。
现在作为一种解决方法,您可以为所有人重新设置类处理程序 AccessKeyPressed事件并在Alt键不处理时处理事件 按压。
EventManager.RegisterClassHandler(typeof(UIElement), AccessKeyManager.AccessKeyPressedEvent, new AccessKeyPressedEventHandler(OnAccessKeyPressed));
private void OnAccessKeyPressed(object sender, AccessKeyPressedEventArgs e)
{
if (!e.Handled && e.Scope == null && (e.Target == null || e.Target == label))
{
// If Alt key is not pressed - handle the event
if ((Keyboard.Modifiers & ModifierKeys.Alt) != ModifierKeys.Alt)
{
e.Target = null;
e.Handled = true;
}
}
}
我将解决方案代码添加到MainWindow类中,一切都按预期工作。