我试图用谷歌搜索这个问题,但没有找到任何东西。
我有WPF ListBox,它与SelectedIndex绑定,ItemSource是带有自定义类的ObservableCollection。一切工作正常,直到我通过向CollectionView添加PropertyGroupDescription将分组添加到ListBox为止。
由于对ListBox中的可见项进行分组与ViewModel集合中的项具有不同的顺序。由于某种原因,我假设SelectedIndex始终基于ItemSource集合,但是看起来SelectedIndex基于可见的ListBox索引。
这意味着SelectedIndex现在具有不同的含义,并且不再可以在ViewModel中使用,因为ListBox索引0(具有分组)可能是与ViewModel索引0(没有分组)不同的项。
有什么方法可以将“ SelectedIndex”和“分组”转换为实际ViewModel ItemSource的索引?
我猜唯一的其他解决方案是绑定到SelectedItem而不是SelectedIndex?
[抱歉,发布问题后,我找到了另一个答案:Get item from CollectionViewSource using index number
我必须将具有分组的ICollectionView存储在变量中,它的顺序与ListBox相同,并且可以使用SelectedIndex而不是原始的ObservableCollection在ICollectionView中进行搜索。
(或直接绑定SelectedItem而不是处理索引)