我有几个组合框,它们是用默认文本初始化的,稍后将用文本文件中的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"
是否有其他方法可以更改项目或者为什么会发生此异常?
答案 0 :(得分:1)
这是一个常见问题。一旦数据绑定了ItemsControl.ItemsSource
(或从ItemsControl
派生的任何类,那么就不能使用ItemsControl.Items
属性来操纵数据。相反,(你应该声明属性和)访问您直接数据绑定的数据集合:
SomeProperty = new ObservableCollection(Of String){"FirstItem", "SecoundItem"})
...
myCombobox.itemSource = SomeProperty
...
SomeProperty.Remove(someItem)