2016-04-25 53 views
0

我有一個CollectionView綁定到ListView ItemsSource屬性。從基礎ObservableCollection源獲取選定CollectionView項目的索引

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

是否有可能從CollectionViewSource獲取項目的索引?

CollectionViewSource.GetDefaultView(ObservableCollection); 

下面我已經說明了這個問題。

當選擇CollectionView中的項目C時,我想獲得索引值2而不是0.這是可能的嗎? enter image description here

任何幫助,非常感謝。謝謝!

回答

1

這適用於我。如您的代碼所示,它假設您要過濾的視圖是此ObservableCollection的默認視圖。

var vw = CollectionViewSource.GetDefaultView(MyObservableCollection); 

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

當然,你也可以綁定ListBox.SelectedItem在您的視圖模型一個SelectedItem性質,並利用該指數也。

+0

我將一個int屬性綁定到ListBox.SelectedItem,問題是它給了我與CollectionView相同的值。你的解決方案當然是一種選擇,但是如果我有很多項目,那麼這種解決方案本身就不會很慢,因爲它必須迭代所有項目才能找到合適的項目? – HaloMediaz

+1

@HaloMediaz確實如此。如果他們排序,你可以有效地搜索,但這是一個很大的「如果」,當然。這些項目經常改變嗎? –

+0

不。我在文本框的文本更改時調用CollectionView的刷新,僅當用戶通過該文本框進行搜索時纔會發生更新。我只需要獲取該項目,當用戶從搜索框中選擇它。我記錄了我正在談論的內容:https://imgur.com/ctgPIQv – HaloMediaz

相關問題