我正在尝试在运行时按下添加按钮(例如ComboBox
),将项目添加到Name="labelComboBox"
(比如说Name="add2labels" Click="add2labels_Click"
)。但是ComboBox
无法显示我新添加的值。我错过了什么?
以下是添加按钮的事件处理程序:
private List<String> labels = new List<String>();
... ...
private void add2labels_Click(object sender, RoutedEventArgs e)
{
labels.Add("new value");
labelComboBox.ItemsSource = labels;
}
P.S。我很确定这些值已正确添加到List<String> labels
(每次都会增加其计数)。
使用ObservableCollection
(@ AnatoliyNikolaev的回答)。
将List<String> labels
更改为ObservableCollection<String> labels
。并且只需要一次调用labelComboBox.ItemsSource = labels;
。
使用Binding
(@ HarshanaNarangoda的回答)。
将ItemsSource="{Binding Path=labels}"
添加到ComboBox
的属性。
使用Refresh()
(@ EliranPe'er's anwer)。
将事件处理程序更改为:
... ...
labelComboBox.ItemsSource = labels;
labelComboBox.Items.Refresh(); // new added
答案 0 :(得分:2)
您应该使用ObservableCollection<T>
代替List<String>
:
ObservableCollection表示动态数据集合,
provides notifications
在添加,删除项目或刷新整个列表时{。}}。
答案 1 :(得分:1)
尝试使用labelComboBox.Items.Refresh();
答案 2 :(得分:1)
我认为您必须将XAML中的某些代码更改为以下内容。您必须将数据绑定到组合框。
<ComboBox ItemsSource="{Binding}" Height="23" HorizontalAlignment="Left" Name="comboBox1" />
答案 3 :(得分:0)
Combobox有一个显示和值成员,可以将值添加到组合框中,您需要指定它们。
试试这个
ComboboxItem item = new ComboboxItem();
item.Text = "new value";
item.Value = 12;
labels.Items.Add(item);