在运行时更改itemssource的值

时间:2018-12-06 09:10:50

标签: c# wpf xaml

我有两个按钮和组合框:

<Button Click="Btn2_Click"/>
<Button Click="Btn_Click"/>
<ComboBox x:Name="myCombo"  IsEditable="True" IsReadOnly="True" Text="-- Choose --"   SelectionChanged="MyCombo_SelectionChanged"/>

该类如下:

private List<string> lst;
public Page2()
{
   InitializeComponent();
   lst = new List<string>();
   myCombo.ItemsSource = lst; //set the combobox itemsource to the list content
}

private void Btn_Click(object sender, RoutedEventArgs e)
{
  //clear all from list and from combobox
  lst.Clear();
  if (myCombo.Items.Count > 0)
     myCombo.Items.Clear();

   for(int i=0;i<10;i++)
      lst.Add(i.ToString());//add some content to the list
}

private void Btn2_Click(object sender, RoutedEventArgs e)
{
  //clear all from list and from combobox
  lst.Clear();
  if (myCombo.Items.Count > 0)
     myCombo.Items.Clear();

   for(int i=10;i<20;i++) //add some other content to the list
     lst.Add(i.ToString());
}

我的问题:当我单击btn1时,我会在组合框中看到值0,1,...9,如果我单击btn2之后,仍会看到相同的0,1,...9值。

这不是我想要的,当我单击btn2时,我想要在组合框10,11,...,19中,

我想念什么?

1 个答案:

答案 0 :(得分:0)

  1. List<string>替换为ObservableCollection<string>

  2. 您已经将myCombo.ItemsSource设置为lst,因此也无需手动更新其Items。只需添加/清除第一个集合,控件就会自动更新。