gpt4 book ai didi

c# - 在使用 ItemsSource 时操作无效。执行两次时改为使用 ItemsControl.ItemsSource 访问和修改元素

转载 作者:行者123 更新时间:2023-11-30 20:52:51 26 4
gpt4 key购买 nike

我有一段代码不能正常工作。如果我执行一次 btnNew 就没有问题。如果我执行两次,我会得到一个错误...

Operation is not valid while ItemsSource is in use. Access and modify elements with ItemsControl.ItemsSource instead.

主类

ClassA obj = new ClassA();         

private void btnNew_Click(object sender, RoutedEventArgs e)
{
//List strings for clearing and then creating new strings for Title combobox
ObservableCollection<string> calledList = obj.GetList();
cbTitle.Items.Clear();
cbTitle.ItemsSource = calledList;
}

A类.cs

private ObservableCollection<string> data = new ObservableCollection<string>();

public ObservableCollection<string> GetList()
{
return data;
}

public void SimpleNew()
{
data.Add("A");
data.Add("B");
}

如果我在主类中使用 if 语句,它将消除问题,然后它会在组合框中创建重复的字符串。然后我问自己是否需要创建一种方法来处理不同的?我不确定这一点。

这是我在主类中的 if 语句

if (cbTitle.Items.Count == 0)
{
ObservableCollection<string> calledList = obj.GetList();
cbTitle.Items.Clear();
cbTitle.ItemsSource = calledList;
}

当我使用 try/catch 时,它会捕获错误并显示消息。所以这也不好。

所以我的问题是谁能告诉我如何解决这个问题?

最佳答案

您不能同时设置 ItemsSource 属性 Items 属性。尝试简单地删除对 cbTitle.Items.Clear() 的调用,如果您在下一行设置 ItemsSource 属性,这是不必要的。


更新>>>

您只需设置一次 ItemsSource 属性,最好是在 XAML 中:

<ComboBox ItemsSource="{Binding Items}" ... />

完成此操作后,您不应再次设置它。要更改 ComboBox 中的项目,只需更改集合中的项目...它们现在是数据绑定(bind)的...这是 WPF,而不是 WinForms:

private void btnNew_Click(object sender, RoutedEventArgs e)
{
//List strings for clearing and then creating new strings for Title combobox
ObservableCollection<string> calledList = obj.GetList();
Items = calledList;
}

关于c# - 在使用 ItemsSource 时操作无效。执行两次时改为使用 ItemsControl.ItemsSource 访问和修改元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20522422/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com