C# 从列表视图(WPF)中的SelectedItem启动键盘导航

C# 从列表视图(WPF)中的SelectedItem启动键盘导航,c#,wpf,listview,navigation,keyboard,C#,Wpf,Listview,Navigation,Keyboard,我正在开发一个WPF列表视图,我想使用键盘导航,现在它实际上可以正常工作。问题如下: 我在列表框中收听SelectionChanged 在事件处理程序中,我将所选项目带入视图(这很好) 当我启动键盘导航时,它从列表的顶部开始,而不是从SelectedItem开始(这是我不想要的) 现在的问题是:如何从SelectedItem而不是第一项开始键盘导航(上下箭头) 下面是我的事件处理程序的外观: protected void ListSelectionChanged ( Object sender

我正在开发一个WPF列表视图,我想使用键盘导航,现在它实际上可以正常工作。问题如下:

  • 我在列表框中收听SelectionChanged
  • 在事件处理程序中,我将所选项目带入视图(这很好)
  • 当我启动键盘导航时,它从列表的顶部开始,而不是从SelectedItem开始(这是我不想要的)
  • 现在的问题是:如何从SelectedItem而不是第一项开始键盘导航(上下箭头)

    下面是我的事件处理程序的外观:

    protected void ListSelectionChanged
     ( Object sender
     , SelectionChangedEventArgs args )
     {
      var enumerator = args.AddedItems.GetEnumerator( );
    
      if ( enumerator.MoveNext( ) )
       ( sender as ListView ).ScrollIntoView( enumerator.Current );
     }
    

    提前谢谢

    我认为@Bolu正确地回答了你的问题。问题与项目的
    焦点有关,而与选择无关。更改
    SelectedItem
    时,请尝试稍后添加此行:

    item.Focus();
    

    我认为@Bolu正确地回答了你的问题。问题与项目的
    焦点有关,而与选择无关。更改
    SelectedItem
    时,请尝试稍后添加此行:

    item.Focus();
    

    ListSelectionChanged
    事件处理程序中,将焦点设置为您的
    selectedItem
    ,可能会重复。我认为键盘导航是关于焦点而不是选择。可能重复的尝试将焦点设置为
    ListSelectionChanged
    事件处理程序中的
    selectedItem
    。我认为键盘导航是关于焦点而不是选择。谢谢,调用
    focus()
    是正确的选择。不管怎么说,我在获取该项目时遇到了一些问题。第一个原因是:它还没有出现。第二个问题是:它已经看不见了,所以虚拟化没有创建它。为了解决这个问题,我必须先
    滚动查看(值)
    ,然后收听
    项目ContainerGenerator.StatusChanged
    来创建项目。最后我可以省去呼叫focus,一切都很顺利。为了将来的参考,另一种方法。该问题的答案是该问题的完整代码。谢谢,调用
    Focus()
    是正确的做法。不管怎么说,我在获取该项目时遇到了一些问题。第一个原因是:它还没有出现。第二个问题是:它已经看不见了,所以虚拟化没有创建它。为了解决这个问题,我必须先
    滚动查看(值)
    ,然后收听
    项目ContainerGenerator.StatusChanged
    来创建项目。最后我可以省去呼叫focus,一切都很顺利。为了将来的参考,另一种方法。这个问题的答案是这个问题的完整代码。