WPF中Datacontext和ItemSsource之间的区别

时间:2009-04-29 07:17:16

标签: c# wpf .net-3.5

重复:

Why are DataContext and ItemsSource not redundant?


在WPF中,我们可以用2种方式将项目列表分配给ComboBox

//CODE #1
//WPF
<ComboBox name="cmbItems" ItemSource={Binding} />

//C#
cmbItems.DataContext = someList;

另一种方式,直接分配itemsource

//CODE #2
//WPF
<ComboBox name="cmbItems" ItemSource={Binding} />
//C#
cmbItems. ItemSource = someList;

两者都有用,但上面的片段有何不同?哪个好用?

2 个答案:

答案 0 :(得分:9)

DataContext主要用于表单,控件等。

ItemSource是在DataContext上进行数据绑定的相对路径。

例如,当您创建一个表单来编辑Person详细信息时,DataContext将是Person,并且表单上的不同控件将分别绑定在该对象的单独属性上,例如Name,Birth of Date等。 / p>

答案 1 :(得分:2)

在第二个示例中,您可以省略ItemsSource = {Binding} ..您正在将ItemsSource直接设置为后面代码中的值..您不需要在此处绑定。在第一个示例中,设置DataContext,并使用绑定从DataContext中再次检索它。

但这并不重要......因为这两种方法都很好......

我使用以下规则的拇指:在代码后面设置它,如果我有可用的集合..设置它在某种绑定模式,如果我需要转换集合,以便我可以使用IValueConverter做这个工作......