【问题标题】:Changing Combobox item in code-behind throws invalidoperationexception在代码隐藏中更改组合框项会引发无效操作异常
【发布时间】:2014-08-11 07:32:25
【问题描述】:

我有几个组合框,它们使用默认文本进行初始化,稍后将由文本文件中的文本替换以支持不同的语言。 我尝试了不同的方法来更改文本,但都没有成功:

初始化:

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

第一种方式:

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

第二种方式:

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

两种方式都会抛出 InvalidOperationException 并提示尝试“ItemsControl.ItemsSource”而不是“ItemsSource”

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

【问题讨论】:

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


    【解决方案1】:

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

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

    ...

    myCombobox.itemSource = SomeProperty
    

    ...

    SomeProperty.Remove(someItem)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-30
      • 1970-01-01
      • 2010-10-02
      • 2023-04-09
      相关资源
      最近更新 更多