WPF中DataContext和ItemSource的区别

5

重复的问题:

为什么DataContext和ItemsSource不是多余的?


在WPF中,我们可以通过两种方式将项目列表分配给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个回答

9

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

ItemSource是一个相对路径,用于在该DataContext上进行数据绑定。

例如,当您制作一个编辑个人详细信息的表单时,DataContext将是Person,表单上的不同控件将分别绑定该对象上的不同属性,例如Name、出生日期等。


2
在第二个示例中,您可以省略ItemsSource={Binding}。您直接将ItemsSource设置为代码后台中的一个值。您不需要绑定。在您的第一个示例中,您设置了DataContext,并使用绑定从DataContext中检索它。
但这并不重要。两种方法都可以正常工作。
我使用以下规则:如果有可用的集合,请在代码后台中设置它。如果需要转换集合,则以某种绑定模式设置它,使我可以使用IValueConverter来完成工作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接