当我向 WPF 窗口添加了一个组合框后,如何向该组合框添加项目?是设计的 XAML 代码还是在 NameOfWindow.xaml.cs 文件中?
最佳答案
案例 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
类型可以用作数据源。你可以——
- 绑定(bind)
ItemsSource
属性(property)XAML
到数据源,如 -
<!-- 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>
作为数据源 - 您应该绑定(bind)
ItemsSource
属性(property)XAML
到数据源(如上所示) - 您可以将数据源分配给
ItemsSource
代码隐藏中的属性(如上所示)
使用 ObservableCollection<T>
确保无论何时将项目添加到数据源或从数据源中删除,更改都会立即反射(reflect)在 UI 上。如何填充 ObservableCollection<T>
取决于您.
关于c# - 将项目添加到 WPF 中的组合框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11878217/