【发布时间】:2010-07-26 13:18:47
【问题描述】:
我的 WPF 应用程序中有一个动作 Edit,它绑定到 ListView 控件中的项目,即当双击项目或单击工具栏中的 Edit 按钮时执行。此操作依次显示带有编辑内容的模式窗口。
现在,当我在列表中选择多个项目时,单击“编辑”,这些项目在背景中保持选中状态,而且,当我关闭对话框时,它们仍然处于选中状态,因为它们的背景是蓝色的。但是,它们似乎没有被选中,因为工具栏中的“编辑”按钮被禁用(编辑操作的CanExecute 方法只检查FileList.SelectedIndex != -1。此外,当我单击时,“选定”项目不会被取消选择其他一些列表项 - 只有当我明确地一一点击它们时它们才会被取消选择 - 就好像蓝色背景卡在它们上面一样。
我的代码没有使用任何花哨的ListView 样式或其他样式,那么可能是什么原因造成的?
我可以根据要求发布我的代码,但这非常标准。
编辑:
在削减我的代码后,我终于找到了导致这个问题的原因。显示对话框后,我编辑数据绑定集合中的项目,以便更新 ListView(即将绑定对象替换为新对象)。问题是,为什么这会导致问题,我应该如何解决?
【问题讨论】:
-
如何编辑项目?替换它们或只是更改属性?您的代码中发生的某些事情会导致您遇到的行为。
-
我将它们替换为新项目。我发现这会以某种方式使列表的 SelectedItems 属性无效,即所选项目的背景保持为蓝色,但由于技术上未选择新项目(不在列表中),因此它们不会被视为这样。我通过在 SelectedItems 集合中添加新对象解决了这个问题。