重复:
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;
两者都有用,但上面的片段有何不同?哪个好用?
答案 0 :(得分:9)
DataContext主要用于表单,控件等。
ItemSource是在DataContext上进行数据绑定的相对路径。
例如,当您创建一个表单来编辑Person详细信息时,DataContext将是Person,并且表单上的不同控件将分别绑定在该对象的单独属性上,例如Name,Birth of Date等。 / p>
答案 1 :(得分:2)
在第二个示例中,您可以省略ItemsSource = {Binding} ..您正在将ItemsSource直接设置为后面代码中的值..您不需要在此处绑定。在第一个示例中,设置DataContext,并使用绑定从DataContext中再次检索它。
但这并不重要......因为这两种方法都很好......
我使用以下规则的拇指:在代码后面设置它,如果我有可用的集合..设置它在某种绑定模式,如果我需要转换集合,以便我可以使用IValueConverter做这个工作......