【问题标题】:ListBox SelectionChanged SelectedItem not updating on some machinesListBox SelectionChanged SelectedItem 在某些机器上未更新
【发布时间】:2013-05-18 23:43:54
【问题描述】:

我编写了一个小型 WPF 应用程序来编辑配置文件。 GUI 主要由两个 ListBox 组成。第二个 ListBox 的内容取决于第一个 ListBox 的选定项,并且只要第一个 ListBox 中的另一个项被选中,就应该更新。 我使用第一个 ListBox 的 SelectionChanged 事件来设置第二个 ListBox 的 ItemsSource 来实现这一点。在我的机器上构建并测试它。工作(并且仍然工作)很好。 然后我将应用程序发送给我的同事,以便他可以试用该应用程序。 在他的机器上,第二个 ListBox 没有更新(当他第一次从第一个 ListBox 中选择一个项目时,第二个按预期更改,但如果他随后选择了另一个项目,则不会)。

我缩小了问题范围,发现事件按预期引发,但 SelectedItem 属性没有改变。

我能够通过使用SelectionChangedEventArgsAddedItems 属性来解决问题,该属性正在正确更新。

有人知道为什么会这样吗?此外,所选项目正确突出显示。那么 WPF 是否使用另一个属性来确定要突出显示的项目?如果是这样,它们怎么会不同步?

如果有人在这里询问相关代码片段

列表框:

<ListBox Name="lb_Users" SelectionChanged="lb_Users_SelectionChanged">
    <ListBox.ContextMenu>
        <ContextMenu>
            <MenuItem Header="Remove" Click="UserRemove_Click"/>
        </ContextMenu>
    </ListBox.ContextMenu>
</ListBox>

以及更新后的处理程序:

private void lb_Users_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    if((e.AddedItems[0] as User)!= null)
    lb_VMs.ItemsSource = (e.AddedItems[0] as User).GetVMs();
}

【问题讨论】:

  • 你们有没有检查过你有相同版本的 .NET,安装了所有相同的 Windows 修补程序/更新?
  • @Renan 有时您会忘记最简单的事情……他的版本比我使用的版本旧。那么这是 .NET 4.03 中的一个已知错误,因为我在谷歌搜索中找不到任何相关信息吗?
  • 可能。不要忘记,随着 Windows 更新自动运行(应该如此),几乎没有人会遇到这种问题。

标签: c# wpf listbox selectionchanged


【解决方案1】:

从 cmets 中可以看出,问题是版本不匹配。希望这对遇到此类问题的人有所帮助,因为似乎没有关于此的文档。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多