2012-08-30 65 views
2

我想了解绑定,所以我想出了一个非常简单的程序来尝试和测试它。如何在XAML中设置ComboBox DataContext?

我在我的主窗口下面的元素:

<ComboBox Name="comboBox1" ItemsSource="{Binding}" /> 

在我的代码,我有以下观察集合:

public ObservableCollection<string> ComboItems = new ObservableCollection<string>(); 

我可以在运行过程中的任何一点成功添加的项目是这样的:

comboBox1.DataContext = ComboItems; 
ComboItems.Clea(); 
ComboItems.Add("Item"); 

我的问题是,我怎么可以在XAML中设置DataContext,使我不必在代码中执行它?可能吗?

谢谢!常见

回答

3

的东西是:

<Window DataContext="{Binding RelativeSource={RelativeSource Self}}"> 
    <ComboBox ItemsSource="{Binding ComboItems}" .../> 

但是通常要注入另一个对象实例为DataContext,看看例如MVVM模式。 WPF中的属性为inherited,因此ComboBoxDataContextWindow,但它可以在任何级别覆盖。

注意:对于绑定工作ComboItems需要是公共财产,而不是字段。感兴趣

资源:

在最后一部分
+0

一个问题。我将ComboItems更改为ObservableCollection {get;组; }。我相信这就是你所说的公共财产,但是,这给了我一个'对象引用未设置...'的错误。 –

+0

@ B-Rad:您是否先不设置值才访问它? (你也应该通常使财产只为只有一个只读字段的集合,即只有私人只读OC field = new OC ();公共OC 属性{获得{return field;}}') –

+0

@ B-Rad:请仔细阅读数据绑定概述。 –

相关问题