案例 1 - 您没有数据源:
您可以使用静态值填充ComboBox,如下所示 -
- 来自 XAML:
<ComboBox Height="23" Name="comboBox1" Width="120">
<ComboBoxItem Content="Alice"/>
<ComboBoxItem Content="Bob"/>
<ComboBoxItem Content="Charlie"/>
</ComboBox>
- 来自 CodeBehind - 1:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
comboBox1.Items.Add("Alice");
comboBox1.Items.Add("Bob");
comboBox1.Items.Add("Charlie");
}
- 来自 CodeBehind - 2:
// insert item at specified index of populated ComboBox
private void Window_Loaded(object sender, RoutedEventArgs e)
{
comboBox1.Items.Insert(2, "Alice");
comboBox1.Items.Insert(5, "Bob");
comboBox1.Items.Insert(8, "Charlie");
}
案例 2 - 您有一个数据源,并且项目永远不会更改:
您可以使用数据源来填充ComboBox。 任何 IEnumerable 类型可以用作数据源。你可以-
- 将
XAML 中的ItemsSource 属性绑定到数据源,例如-
<!-- MyDataSource is an IEnumerable type property in ViewModel -->
<ComboBox Height="23" Width="120" ItemsSource="{Binding MyDataSource}" />
- 将数据源分配给代码隐藏中的
ItemsSource 属性,例如 -
private void Window_Loaded(object sender, RoutedEventArgs e)
{
comboBox1.ItemsSource = new List<string> { "Alice", "Bob", "Charlie" };
}
案例 3 - 您有一个数据源,项目可能会更改
- 您应该使用
ObservableCollection<T>作为数据源
- 您应该将
XAML 中的ItemsSource 属性绑定到数据源(如上所示)
- 您可以将数据源分配给代码隐藏中的
ItemsSource 属性(如上所示)
使用ObservableCollection<T> 可确保无论何时将项目添加到数据源或从数据源中删除,更改都会立即反映在 UI 上。如何填充 ObservableCollection<T> 取决于您。