在代码隐藏中更改Combobox项会抛出invalidoperationexception

时间:2014-08-11 07:32:25

标签: wpf vb.net combobox code-behind invalidoperationexception

我有几个组合框,它们是用默认文本初始化的,稍后将用文本文件中的textes替换它们以支持不同的语言。 我尝试了不同的方法来改变文本,但没有一个能够解决问题:

初​​始化:

myCombobox.itemSource = new ObservableCollection(Of String){"FirstItem", "SecoundItem"})

第一种方式:

myCombobox.Items(i) = GetString(myCombobox.Items(i))

Secound Way:

Dim comboboxStr = myCombobox.Items(i)
myCombobox.Items.RemoveAt(i)
myCombobox.Items.Add(GetString(i))

两种方式都会抛出一个带有提示的InvalidOperationException来尝试" ItemsControl.ItemsSource"而不是" ItemsSource"

是否有其他方法可以更改项目或者为什么会发生此异常?

1 个答案:

答案 0 :(得分:1)

这是一个常见问题。一旦数据绑定了ItemsControl.ItemsSource(或从ItemsControl派生的任何类,那么就不能使用ItemsControl.Items属性来操纵数据。相反,(你应该声明属性和)访问您直接数据绑定的数据集合:

SomeProperty = new ObservableCollection(Of String){"FirstItem", "SecoundItem"})

...

myCombobox.itemSource = SomeProperty

...

SomeProperty.Remove(someItem)