我想在同一个WPF窗口中填充带有用户输入创建的List的comboBox,但它不起作用
MainWindow.xaml.cs
//Here I populate the ComboBox with the List
private void Window_Initialized_1(object sender, EventArgs e){
List<string> listaCiudad = EstudioService.obtenerCiudad();
this.ciudadesCBx.Items.Clear();
foreach (String ciudad in listaCiudad){
this.ciudadesCBx.Items.Add(ciudad);
}
}
//Here I get the user input from a textBox called ciudadTxt
//by clicking in the button named agregarCiudadBtn
private void agregarCiudadBtn_Click(object sender, RoutedEventArgs e)
{
EstudioService.agregarCiudad(ciudadTxt.Text);
}
公共类EstudioService
private static List<String> listaCiudad = new List<string>();
public static void agregarCiudad(String ciudad)
{
listaCiudad.Add(ciudad);
}
public static List<String> obtenerCiudad()
{
return listaCiudad;
}
答案 0 :(得分:1)
使用ObservableCollection<T>
代替List<T>
。将该可观察列表放在模型中并将其绑定到组合框。如果它是空的并不重要。稍后当您输入时,只需在可观察列表集合中添加新输入,组合框应立即将其选中。
答案 1 :(得分:0)
问题是,代码将List
值添加到Window_Initialized_1
eevent中的组合框中,我相信只有在表单初始化时才触发此事件(在您的情况下)(如果不是这样,请更正我)
将以下逻辑移至agregarCiudad
方法。
this.ciudadesCBx.Items.Clear();
oreach (String ciudad in listaCiudad){
this.ciudadesCBx.Items.Add(ciudad);
}
所以你的方法看起来应该是
public static void agregarCiudad(String ciudad)
{
this.ciudadesCBx.Items.Clear();
listaCiudad.Add(ciudad);
ciudadesCBx.Items.AddRange(listaCiudad);
}