2013-05-17 33 views
0

有沒有辦法從LongListSelector控制獲取特定元素的索引?我想刪除用戶選擇的對象,但似乎沒有這樣做的簡單方法。該LongListSelector的數據源(的ObservableCollection)可以包含重複,所以如果我把刪除它,然後它只會刪除它遇到的,而不是用戶選擇的一個第一個實例。LongListSelector獲取所選指數

我可以使用ObservableCollection的RemoveAt方法,但我似乎無法從LongListSelector中獲取索引,因此我可以將它作爲RemoveAt方法的參數傳遞。

+0

你說的「可以包含重複」是什麼意思?你的意思是你的列表多次包含一個對象的** ** **實例(相同的引用)? –

+0

不同的引用(兩個不同的對象),但它們具有相同的屬性值,所以如果對它們進行了相等性檢查,它們會匹配。 Remove方法檢查是否相等,因此它只刪除它遇到的第一個實例,而不是用戶選擇的實例。 – XSL

回答

2

不知道這是否會幫助你或沒有,但如果你在你的應用程序中使用的整體MVVM方法,你通常有列表中的每個項目視圖模型。這樣,您可以定義在項目視圖模型和數據綁定的IsSelected屬性,到LongListSelector控制。然後,當你需要刪除的項目,你只需找到IsSelected集中的所有項目true

舉一個簡單的例子,在我的項目視圖模型之一,我有這樣的特性:

/// <summary> 
    /// Is this location selected in the UI? 
    /// </summary> 
    public bool Selected 
    { 
     get { return _selected; } 
     set 
     { 
      if (value != _selected) 
      { 
       _selected = value; 
       RaisePropertyChanged("Selected"); 
      } 
     } 
    } 

然後在我的XAML項目模板,我有一個綁定這樣一個複選框控件:

<CheckBox Grid.Column="0" Grid.RowSpan="2" IsChecked="{Binding Path=Selected,Mode=TwoWay}" 
      VerticalAlignment="Top" Margin="0,-10,0,0"/> 

希望這有助於。