【问题标题】:listview skip whole control focus, set focus directly to listviewitemlistview跳过整个控件焦点,直接设置焦点到listviewitem
【发布时间】:2013-08-21 17:52:18
【问题描述】:

这是乏味且有问题的。

我正在尝试直接从另一个控件通过键盘导航(向下箭头)到 listview.item。 正如一些处理过这个问题的人已经预料到的那样,整个列表视图控件首先获得焦点,然后再一个箭头键将选择该项目。

有一些解决方案可以解决这个问题,但是我必须将焦点移回另一个带有向上箭头键的控件,这还没有明确的解决方案。

此处发布了解决此问题的最接近方法:http://cytivrat.blogspot.com/2011/05/selecting-first-item-in-wpf-listview.html

但是这个并没有解决按键行为不同的问题。

我希望解决方案更简单、更简洁,就好像将一个属性设置为 true/false 一样。

【问题讨论】:

  • 如果它不像上面那么简单(认为它会阻止你选择项目,但我可能会弄错)......我认为你必须从控制行动中管理它作为所有这些其他控件的容器,在 keyup/down 事件中;手动跳过列表视图并手动确定“上方”的控件。
  • @JP_medevice 对。我误解了你的问题。
  • @Greg 你是对的,除了我必须处理列表视图“下方”的项目。有什么建议可以解决吗?

标签: c# wpf


【解决方案1】:

当您尝试使用导航键时,键盘似乎没有聚焦。我只是在用 gridview 处理这个问题,但this answer 解决了这个问题,你需要做的就是我想使用 Dispatcher 设置焦点。在我的情况下,网格被聚焦,但我无法使用箭头键浏览行。

  Dispatcher.BeginInvoke(
        DispatcherPriority.ContextIdle,
        new Action(delegate()
        {
            ItemsFlowListBox.Focus();
            ItemsFlowListBox.ScrollIntoView(ItemsFlowListBox.SelectedItem);
        }));

【讨论】:

  • 很抱歉,虽然这对于没有键盘焦点的人来说可能是一个很好的解决方案,但这不是我的问题。我的问题是 listview 本质上具有两个焦点,一个是整个 listview,然后是 listview.item。我自然无法直接进入第二个
猜你喜欢
  • 1970-01-01
  • 2016-10-22
  • 1970-01-01
  • 1970-01-01
  • 2011-10-13
  • 2017-02-24
  • 2017-01-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多