列表框选择已更改选定项在某些计算机上未更新

本文关键字:计算机 更新 选择 列表 | 更新日期: 2023-09-27 18:14:57

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

我缩小了问题范围,发现事件按预期引发,但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();
}

列表框选择已更改选定项在某些计算机上未更新

如注释所示,问题是版本不匹配。希望这对遇到此类问题的人有所帮助,因为似乎没有这方面的文档。