在WPF中将项添加到comboBox

3D-*_*tiv 22 c# wpf

当我向WPF窗口添加一个comboBox时,如何将项添加到comboBox?在设计的XAML代码中或在NameOfWindow.xaml.cs文件中?

ati*_*yar 43

场景1 - 您没有ComboBox项目的数据源
您可以使用静态值填充ComboBox,如下所示 -
从XAML:

<ComboBox Height="23" Name="comboBox1" Width="120">
        <ComboBoxItem Content="X"/>
        <ComboBoxItem Content="Y"/>
        <ComboBoxItem Content="Z"/>
</ComboBox>  
Run Code Online (Sandbox Code Playgroud)

或者,从CodeBehind:

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    comboBox1.Items.Add("X");
    comboBox1.Items.Add("Y");
    comboBox1.Items.Add("Z");
}  
Run Code Online (Sandbox Code Playgroud)

场景2.a - 您有一个数据源,项目永远不会被更改
可以使用数据源来填充ComboBox.任何 IEnumerable类型都可以用作数据源.你需要将它分配给ItemsSourceComboBox 的属性,这样就可以了(这取决于你如何填充IEnumerable).

场景2.b - 您有一个数据源,项目可能会被更改
应该使用a ObservableCollection<T>作为数据源并将其分配给ItemsSourceComboBox 的属性(这取决于您如何填充ObservableCollection<T>).使用ObservableCollection<T>确保无论何时在数据源中添加或删除项目,更改都将立即反映在UI上.


Pra*_*ana 31

最好是构建ObservableCollection并利用它

public ObservableCollection<string> list = new ObservableCollection<string>();
list.Add("a");
list.Add("b");
list.Add("c");
this.cbx.ItemsSource = list;
Run Code Online (Sandbox Code Playgroud)

cbx是comobobox名称

另请阅读:List,ObservableCollection和INotifyPropertyChanged之间的区别


Nik*_*wal 10

用这个

string[] str = new string[] {"Foo", "Bar"};

myComboBox.ItemsSource = str;
myComboBox.SelectedIndex = 0;
Run Code Online (Sandbox Code Playgroud)

要么

foreach (string s in str)
    myComboBox.Items.Add(s);

myComboBox.SelectedIndex = 0;      
Run Code Online (Sandbox Code Playgroud)