WPF:如果绑定数据更新,listview SelectedIndex返回-1?

时间:2009-11-12 00:12:11

标签: wpf data-binding listview

我在ListView中显示数据。使用TimerCallback每3秒更新一次数据(通过DLL获取并在ObservableCollection中设置)。我在ListView和数据之间使用数据绑定。

我正在为列表视图项添加右键菜单。好像数据更新时,我的listview的SelectedIndex将返回-1。如果我非常快地使用右键单击菜单或者将TimerCallback设置得不那么频繁,我不会经常将SelectedIndex等于-1。

1 - 我的假设是否正确?

2 - 如果是这样,我该如何解决这个问题呢?我可以检测到弹出右键菜单的时间,并且只是在TimerCallback上禁用后台数据更新吗?有更好的方法吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

将ListView ItemsSource绑定到ObservableCollection时,只有保留相同的对象时才会保留SelectedItem信息。

如果您使用此类代码更新ItemsSource

yourListView.ItemsSource = newObsevableCollection;

您将丢失更新通知和所选项目信息,因为您使用了新的对象实例。

解决方案是保留相同的对象并只更新值并实现NotifyChanged事件以更新ListView