c# - style - 在運行時添加項目到組合框?



wpf combobox selecteditem (3)

Combobox有一個顯示和有價值的成員來添加值組合框你需要指定兩者。

嘗試這個

ComboboxItem item = new ComboboxItem();
item.Text = "new value";
item.Value = 12;

labels.Items.Add(item);

我試圖在運行時添加項目到一個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;
}

PS我很確定這些值正確地添加到List<String> labels (它的計數每次都增加)。

更新可行的解決方案(3種方式):

  1. 使用ObservableCollection (@ AnatoliyNikolaev的答案)。

    List<String> labels更改為ObservableCollection<String> labels 。 只需要調用labelComboBox.ItemsSource = labels; 一次。

  2. 使用Binding (@ HarshanaNarangoda的答案)。

    ItemsSource="{Binding Path=labels}"ComboBox的屬性中。

  3. 使用Refresh() (@ EliranPe'er's anwer)。

    將事件處理程序更改為:

    ... ...
    labelComboBox.ItemsSource = labels;
    labelComboBox.Items.Refresh();      // new added

Answer #1

嘗試使用labelComboBox.Items.Refresh();


Answer #2

您應該使用ObservableCollection<T>而不是List<String>

ObservableCollection表示一個動態數據集合,當項目被添加,刪除或整個列表刷新時, provides notifications





combobox