【问题标题】:ListBox not highlighting selection on tab change列表框未突出显示选项卡更改时的选择
【发布时间】:2013-08-31 16:59:46
【问题描述】:

我目前是第一次尝试 C# 和 WPF。

我有一个带有两个选项卡的窗口,tabAtabB。每个选项卡都有一个列表框(它们几乎相同),tabAlistboxAtabBlistboxB。 When an item in a list box is selected, some information about the item is shown, so that I know that it is selected.

在某个事件E 上,我希望突出显示并选择listboxAlistboxB 中的一个项目,这取决于我的应用程序中的逻辑。

场景 A 是我目前在tabA。当出现E 时,会选择listboxA 中的一项。我打电话给listboxA.Focus(),然后是listboxA.SelectedItem = item。这工作正常。 item 被选中,因此项目的相关信息会显示出来,并且项目会在列表中突出显示。

我遇到问题的场景 B 是我目前在 tabA。当出现E 时,会选择listbox<b>B</b> 中的一项。我打电话给tabControl.SelectedItem = tabB 来切换标签,效果很好。与场景 A 一样,我调用 listboxB.Focus(),然后调用 listboxB.SelectedItem = item。该项目被选中,因为显示了有关该项目的信息,但是,事情是这样的:该项目未在列表框中突出显示

tabB 更改为tabA 时也会发生这种情况。当我更改标签时总是会发生这种情况,但如果我留在同一个标​​签中,突出显示效果很好。

除了调用Focus()之外,有谁知道在更改选项卡后我还需要做些什么来使列表框成为焦点吗?

【问题讨论】:

  • 什么活动E
  • E 不是 WPF 生成的事件。事件 E 是我双击另一个列表框 C 中的项目,因为它是 E 的用户交互,所以我没有放在此描述中。
  • 如果你使用listBoxA.SelectedIndex = 2listBoxB.SelectedIndex = 2而不是设置焦点并使用SelectedItem会发生什么?
  • 行为是一样的。
  • 也许这是同一个问题:stackoverflow.com/questions/7928795/…

标签: c# wpf listbox selection tabcontrol


【解决方案1】:

WPF 有焦点范围,列表框可​​能在其范围内获得焦点,但范围本身可能没有焦点。或者,列表框可​​能具有焦点,但它包含需要获得焦点的项目的单独范围。

【讨论】:

  • 你的意思是像tabB.Focus()?我尝试在 tabControl.SelectedItem = tabB 之后添加它,但在 listboxB.Focus() 之前添加,但不幸的是,这并没有改变任何东西。
  • @HelenaStaberg:不,选项卡的内容,我不确定您是否可以获得对所需控件的引用,尽管它可能在控件模板中。
  • 我现在使用 tabB.Content 获取内容,它是一个网格。然后我在检索到的 Grid 上调用 Focus(),但这并没有改变任何行为。
  • @HelenaStaberg:您需要将键盘焦点赋予范围it seems,不确定Focus 是否做到了(返回一个布尔值表示)
  • 这似乎确实相关,因为 listbox.Focus() 如果我留在同一个选项卡中,则返回 True,但如果我更改选项卡,则返回 False。我会尝试一段时间,看看我是否可以修复它。
猜你喜欢
  • 2023-03-16
  • 1970-01-01
  • 2010-12-29
  • 1970-01-01
  • 1970-01-01
  • 2012-07-19
  • 2014-04-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多