C# 绑定列表<;字符串>;到组合框

C# 绑定列表<;字符串>;到组合框,c#,wpf,C#,Wpf,我有一个字符串列表。 我想用字符串列表填充一个组合框。我该怎么做? 我所有的尝试和探索都是死胡同 我用过: <ComboBox Name="comboBox2" ItemsSource="{Binding Combobox2items}" /> public partial class EditRule : Window { public ObservableCollection<string> Combobox2items { get; set; }

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

我用过:

<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");

    }}

公共部分类EditRule:窗口
{
公共ObservableCollection Combox2Items{get;set;}
公共编辑规则()
{
初始化组件();
Combobox2items=新的ObservableCollection();
Combobox2项添加(“DFd”);
}}
编辑: 添加
Combobox2items.ItemsSource=Combobox2items

工作正常,但为什么ItemsSource=“{Binding Combobox2items}”不工作?

使用
ObservableCollection
而不是
List
,它为您实现
INotifyCollectionChanged

WPF提供了ObservableCollection类,它是一个内置的 实现一个数据收集,该数据收集实现 INotifyCollectionChanged接口


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

comboBox1.ItemsSource = myList;
。。。或者,如果列表是窗口的DataContext对象的属性:

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

您可以通过两种方式弹出组合框,实际上是每个ItemsControl

第一:直接向其中添加项,这可以在代码或Xaml中工作

<ComboBox>
    <ComboBoxItem Name="Item1" />
    <ComboBoxItem Name="Item2" />
</ComboBox>

这很好,但有一个问题。如果在将列表设置为ItemsSource后对其进行更改,UI将无法跟上最新的更改。因此,要使其正常工作,您需要使用
ObservableCollection
现在集合可以通知任何更改,UI将听取这些更改。并自动将新项目添加到组合框。

将列表绑定到组合框。项目来源切换到编辑:绑定无效,因为绑定在当前数据上下文中使用属性“Combobox2Items”。但据我所知,您从未设置任何DataContext。我建议你读一读我认为答案是不够的。是的,使用ObservableCollection是一个好的实践。这不是问题所在。如果不希望或不需要实时更改,那么使用列表是非常好的。但问题很模糊,我就是这么做的:公共部分类EditRule:Window{public ObservableCollection Combox2Items{get;set;}public EditRule(){InitializeComponent();Combox2Items=new ObservableCollection();}
List<string> myItemsCollection = new List<string>();
public Window1()
{
   InitializeComponent();
   myItemsCollection.Add("Item1");
   myCombobox.ItemsSource = myItemsCollection;
}