如何更新ICollectionView的项目?获取“在使用ItemsSource时操作无效。[...]”

时间:2017-06-02 08:59:37

标签: c# wpf combobox icollectionview

所以我有一个ICollectionView,它被设置为基于ComboBox的自定义控件的ItemsSource。

我可以将它设置得很好但我无法使用新项目更新它,因为我得到了这个:

  

使用ItemsSource时,操作无效。访问和修改   而使用ItemsControl.ItemsSource的元素。

通过

尝试时
viewModel.TheICollectionView = new CollectionView(CollectionViewSource.GetDefaultView(viewModel.OriginalList));
只要OriginalList发生了变化,它就会被EventHandler调用。

ItemsSource设置如下:

<controls:CustomComboBox ItemsSource="{Binding Path=TheICollectionView}"/>

然后在自定义控件中我有事件处理程序OnItemsSourceChanged我在哪里:

TheComboBox.Items.Clear();
TheComboBox.ItemsSource = _itemsSource;

错误在Items.Clear()

处抛出

此错误的其他答案没有帮助。

1 个答案:

答案 0 :(得分:0)

只需将项目添加到视图模型的OriginalList集合中:

public ICollectionView TheICollectionView { get; set; }

public ObservableCollection<int> OriginalList { get; set; } = new ObservableCollection<int>();

public void Method()
{
    TheICollectionView = new CollectionView(CollectionViewSource.GetDefaultView(OriginalList));
    ...
    OriginalList.Add(1);
}

设置Items属性后,您无法将新项添加到ComboBox的ItemsSource集合中。