2015-12-10 33 views
0

我想從刪除的項目我observablecollection列表視圖刪除項目索引源是在使用WPF

ObservableCollection<GetterSetter> _getterSetter = new ObservableCollection<GetterSetter>(); 

public ObservableCollection<GetterSetter> showList 
    { 
     get { return this._getterSetter; } 
    } 

所以我的XAML文件是這樣的,

<ListView x:Name="listView" Grid.Row="1" SelectionChanged="listView_SelectionChanged" Foreground="Black" ItemsSource="{Binding ListViewCollection}" SelectedItem="{Binding SelectedListViewItem,Mode=TwoWay}" SelectionMode="Single"> 
<ListView.View> 
    <GridView> 
     <GridViewColumn Header="Name" Width="180" DisplayMemberBinding="{Binding ShowName}"/> 
    </GridView> 

和我在這裏ShowName的getter setter方法,

private string _showName; 

public String ShowName{ 
    get { return _showName; } 
    set 
    { 
     if (value == _showName) return; 
     _showName = value; 
     OnPropertyChanged(); 
    } 

我想刪除這樣的選定項目,它給了我一個錯誤,

listView.Items.Remove(listView.SelectedItems[0]); 
showList.RemoveAt(listView.Items.IndexOf(listView.SelectedItems[0])); 

我也試過這個

var delete = SelectedListViewItem; 
listView.Items.Remove(delete); 

無一不給了我這個錯誤,

'System.InvalidOperationException' 類型的未處理的異常出現在PresentationFramework.dll

附加信息:在ItemsSource正在使用時,操作無效。改爲使用ItemsControl.ItemsSource訪問和修改元素。

的方式GetterSetter是我的CS文件是我第三代碼段位於何處,

public GetterSetter SelectedListViewItem 
    { 
     get { return _selectedListViewItem; } 
     set 
     { 
      if (Equals(value, _selectedListViewItem)) return; 
      _selectedListViewItem = value; 
      OnPropertyChanged(); 
     } 
    } 

回答

1

完全一樣的錯誤說,直接做的ItemsSource從。要做到這一點,您需要將ItemsSource設置爲它的類型,然後執行刪除操作。

if(SelectedListViewItem != null) 
{ 
    // EDIT: Typo in the lambda for FirstOrDefault 
    var delete = showList.FirstOrDefault(x => SelectedListViewItem.ShowName == x.ShowName); 
    if(delete != null) 
    { 
     ((ObservableCollection<GetterSetter>)listView.ItemsSource).Remove(delete); 
    } 
} 

編輯:NULL怪物正在讓你。

+0

現在,它給了我「型‘System.ArgumentOutOfRangeException’未處理的異常出現在mscorlib.dll 附加信息:索引超出範圍必須爲非負數且小於集合的大小。」在這一行代碼中,'showNameBox.Text = showList [listView.Items.IndexOf(listView.SelectedItems [0])]。ShowName;' – Louni

+0

究竟是什麼SelectedListViewItem?它在哪裏定義? –

+0

它在xaml代碼中定義,你可以在第二個代碼片段中看到它 – Louni

相關問題