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;
}