C#在同一个WPF窗口中使用用户输入创建的List <string>填充comboBox

时间:2016-05-17 08:47:42

标签: c# wpf list combobox textbox

我想在同一个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;
    }

2 个答案:

答案 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);

}