从底层 ObservableCollection 源获取所选 CollectionView 项的索引

Get index of selected CollectionView item from underlying ObservableCollection source

我有一个绑定到 ListView ItemsSource 的 CollectionView 属性。

<ListView x:Name="ExampleView" 
          ItemsSource="{Binding CollectionView}" 
          IsSynchronizedWithCurrentItem="True">...</ListView>

是否可以从 CollectionViewSource 获取项目的索引?

CollectionViewSource.GetDefaultView(ObservableCollection);

下面我已经说明了问题。

当从 CollectionView 中选择项目 C 时,我想获得索引值 2 而不是 0。这可能吗?

非常感谢任何帮助。谢谢!

这对我有用。正如您的代码所建议的那样,它假定您正在过滤的视图是此 ObservableCollection 的默认视图。

var vw = CollectionViewSource.GetDefaultView(MyObservableCollection);

int index = MyObservableCollection.IndexOf(vw.CurrentItem);

当然,您也可以将 ListBox.SelectedItem 绑定到视图模型上的 SelectedItem 属性,并获取其索引。