绑定List到一个组合框

本文关键字:一个 组合 List string 绑定 | 更新日期: 2023-09-27 18:05:07

我有一个字符串列表。我想用字符串列表填充一个组合框。我该怎么做呢?我所有的尝试和搜索都是死胡同。

我使用

:

<ComboBox  Name="comboBox2" ItemsSource="{Binding Combobox2items}" />
 public partial class EditRule : Window
{
    public ObservableCollection<string> Combobox2items { get;  set; }
    public EditRule()
    {
        InitializeComponent();
        Combobox2items = new ObservableCollection<string>();
    Combobox2items.Add("DFd");
    }}

编辑:添加Combobox2items.ItemsSource = Combobox2items;工作,但为什么ItemsSource="{Binding Combobox2items}"不?

绑定List<string>到一个组合框

您可以用两种方式填充组合框,实际上是每个ItemsControl。

第一步:直接向它添加项目,这在Code或Xaml

中有效
<ComboBox>
    <ComboBoxItem Name="Item1" />
    <ComboBoxItem Name="Item2" />
</ComboBox>

,但这是静态的。第二种方法使用动态列表。

作为一个例子,让我们假设在你的xaml中有一个窗口和一个组合框。Combobox得到x:Name="myCombobox"

在你的代码后面,你可以创建你的列表并将其设置为ItemsSource

List<string> myItemsCollection = new List<string>();
public Window1()
{
   InitializeComponent();
   myItemsCollection.Add("Item1");
   myCombobox.ItemsSource = myItemsCollection;
}

可以正常工作,但是有一个问题。如果在将List设置为ItemsSource后更改它,则UI将无法跟上最新的更改。因此,为了使其正常工作,您需要使用ObservableCollection,现在集合可以通知UI将侦听的任何更改。并自动将新项目添加到组合框中。

WPF中任何基于列表的控件都有一个ItemsSource属性,您可以为其分配或绑定列表。在代码:

comboBox1.ItemsSource = myList;

…或者如果你的list是Window的DataContext对象的属性:

<ComboBox ItemsSource="{Binding MyList}" />

使用ObservableCollection<string>代替List<string>,它为你实现了INotifyCollectionChanged

ObservableCollection类

WPF提供了ObservableCollection类,这是一个内置的的数据集合的实现INotifyCollectionChanged界面