listbox focus与快捷方式完全错误

时间:2014-08-23 09:59:34

标签: c# wpf listbox .net-4.5

当我选中ListBox控件时,第一个项目会被聚焦。当我有一个标签并将目标属性设置为ListBox(如下面的代码所示),然后使用专用的Alt快捷方式,它将不会聚焦第一个项目,而是列表框本身(列表框边框变为点线)。避免这种不良行为的最佳方法是什么?有没有办法禁用对列表框本身的关注,只允许关注项目?

示例代码:

    <Label Content="_Label" Margin="0,10,0,88" Name="MyLabel" Target="{Binding ElementName=MyListBox}" Height="Auto" />
    <ListBox Width="100" Name="MyListBox" Margin="46,0,639,0" />

行为:

enter image description here

1 个答案:

答案 0 :(得分:1)

通过设置Target,您明确要求焦点移动到listBox。如果你想把它放在第一个listBox项目上,你必须手动完成。

一种方法是挂钩 GotFocus 事件,并使用 TravelRequest 对象将焦点设置为下一个可用项目,该对象将其放在第一个listBox上项目

XAML:

<ListBox Width="100" Name="MyListBox" Margin="46,0,639,0"
         GotFocus="MyListBox_GotFocus"/>

背后的代码

private void MyListBox_GotFocus(object sender, RoutedEventArgs e)
{
    if (e.OriginalSource == sender)
    {
        TraversalRequest request = new TraversalRequest(FocusNavigationDirection.Next);
        MyListBox.MoveFocus(request);
    }
}