Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Listview删除项索引源正在使用wpf_C#_Wpf_Listview_Items - Fatal编程技术网

C# Listview删除项索引源正在使用wpf

C# Listview删除项索引源正在使用wpf,c#,wpf,listview,items,C#,Wpf,Listview,Items,我想从我的observedcollection ObservableCollection<GetterSetter> _getterSetter = new ObservableCollection<GetterSetter>(); public ObservableCollection<GetterSetter> showList { get { return this._getterSetter; } } 我想像这样删除

我想从我的
observedcollection

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

public ObservableCollection<GetterSetter> showList
    {
        get { return this._getterSetter; }
    }
我想像这样删除选中的项目,它会给我一个错误

listView.Items.Remove(listView.SelectedItems[0]);
showList.RemoveAt(listView.Items.IndexOf(listView.SelectedItems[0]));
我也试过这个

var delete = SelectedListViewItem;
listView.Items.Remove(delete);
两个人都给了我这个错误

PresentationFramework.dll中发生类型为“System.InvalidOperationException”的未处理异常

其他信息:ItemsSource正在使用时,操作无效。改为使用ItemsControl.ItemsSource访问和修改元素

顺便说一下,
GetterSetter
是我的cs文件,我的第三个代码段在哪里

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

正如错误所说,直接从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);
    }
}
if(SelectedListViewItem!=null)
{
//编辑:在FirstOrDefault的lambda中键入
var delete=showList.FirstOrDefault(x=>SelectedListViewItem.ShowName==x.ShowName);
如果(删除!=null)
{
((ObservableCollection)listView.ItemsSource).删除(delete);
}
}

编辑:空怪物正在攻击你。

现在它给我“mscorlib.dll中发生了“System.ArgumentOutOfRangeException”类型的未处理异常。其他信息:索引超出范围。必须为非负且小于集合的大小。”在这行代码中,
showNameBox.Text=showList[listView.Items.IndexOf(listView.SelectedItems[0])].ShowName;
SelectedListViewItem到底是什么?它是在哪里定义的?它是在xaml代码中定义的。您可以在第二个代码段中看到它绑定到属性,但我需要知道该属性是什么类型。好的,我看到我编辑了我的问题,您可以在最后一个代码段中看到它
public GetterSetter SelectedListViewItem
    {
        get { return _selectedListViewItem; }
        set
        {
            if (Equals(value, _selectedListViewItem)) return;
            _selectedListViewItem = value;
            OnPropertyChanged();
        }
    }
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);
    }
}