当我选中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" />
行为:
答案 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);
}
}