c# - 将项目添加到 WPF 中的组合框

标签 c# wpf

当我向 WPF 窗口添加了一个组合框后,如何向该组合框添加项目?是设计的 XAML 代码还是在 NameOfWindow.xaml.cs 文件中?

最佳答案

案例 1 - 您没有数据源:

您可以只填充 ComboBox静态值如下 -

  1. 来自 XAML:
<ComboBox Height="23" Name="comboBox1" Width="120">
    <ComboBoxItem Content="Alice"/>
    <ComboBoxItem Content="Bob"/>
    <ComboBoxItem Content="Charlie"/>
</ComboBox>
  1. 来自 CodeBehind - 1:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
    comboBox1.Items.Add("Alice");
    comboBox1.Items.Add("Bob");
    comboBox1.Items.Add("Charlie");
}
  1. 来自 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类型可以用作数据源。你可以——

  1. 绑定(bind)ItemsSource属性(property) XAML到数据源,如 -
<!-- MyDataSource is an IEnumerable type property in ViewModel -->
<ComboBox Height="23" Width="120" ItemsSource="{Binding MyDataSource}" />
  1. 将数据源分配给 ItemsSource代码隐藏中的属性,例如 -
private void Window_Loaded(object sender, RoutedEventArgs e)
{
    comboBox1.ItemsSource = new List<string> { "Alice", "Bob", "Charlie" };
}

案例 3 - 您有一个数据源,并且项目可能会发生变化

  1. 应该使用 ObservableCollection<T>作为数据源
  2. 应该绑定(bind) ItemsSource属性(property) XAML到数据源(如上所示)
  3. 可以将数据源分配给 ItemsSource代码隐藏中的属性(如上所示)

使用 ObservableCollection<T>确保无论何时将项目添加到数据源或从数据源中删除,更改都会立即反射(reflect)在 UI 上。如何填充 ObservableCollection<T> 取决于您.

关于c# - 将项目添加到 WPF 中的组合框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11878217/

相关文章:

c# - ASP.Net MVC Ajax.BeginForm OnComplete 在 Razor View 中传递 c# 参数

c# - 拒绝访问 C :\program file\myapplicationfolder\

c# - 用其他XAML文件中的网格替换内容WPF网格控件

.net - WPF 控件和 SystemColors - Alpha 混合?

c# - 用一定数量的元素初始化 List<>

c# - 我的 Xpath 有什么问题吗?

c# - WPF如何更改gridview的标题颜色

c# - DispatcherOperation.Task 立即返回

c# - WPF 自定义控件 - 绑定(bind)到代码隐藏中定义的命令

wpf - 将鼠标移出控制范围时禁用按钮