本文介绍了绑定情况下的ItemsSource与DataContext的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的主要问题是关于一个控件有多个源(DataGrid中的组合框)(或同时具有datacontext和itemssource)场景中的绑定情况。那么我们如何知道绑定将使用哪个源呢?(澄清这一点的任何语法) 假设数据网格有一个itemssource="球员列表"datacontext="Manager" ,并且有一个组合框作为一种列。我们还假设每个玩家都有一个集合类型的库存属性。
然后在datagrid.column中:
- 每个列(用于绑定)的当前源是一个播放器(到目前为止我是这么理解的)。我们只能绑定到播放器的属性,而不能绑定到datacontext"manager"的属性。无法绑定到"Manager"的属性。我说的对吗?
- 但是,如果我们移动到combobox列,那么假设我让combobox的itemssource=‘Player’s Inventory‘,那么comboxItem的当前源将是库存中的每个项目。如果我使用绑定,它只能绑定到这些项的属性。 但是,有时我会看到代码,我们还可以在组合框的属性中将其绑定到播放器的属性,特别是SelectedItem和SelectedItem。我这里有点困惑 你能帮我吗?
谢谢您
推荐答案
要考虑的关键控件是ItemsControl
(ComboBox
继承自ItemsControl
,DataGrid
的行为非常相似)。
ANItemsControl
具有ItemsSource
类型的IEnumerable
属性。它还具有ItemTemplate
属性。它将执行的操作是为ItemsSource
中的每个项目创建其ItemTemplate
的一个副本。ItemTemplate
的DataContext
将是ItemsSource
中的每一项。
ComboBox
,DataGrid
列的DataContext
将是您的Player
对象。如果将ComboBox
的ItemSource
绑定到Player
的库存,则将获得ComboBox
列表中的每一项。需要注意的是,
ComboBox
本身的DataContext
没有变化。它仍然是Player
对象。如果您为ComboBox
指定ItemTemplate
,则DataContext
将成为Player
库存中的项目。
这篇关于绑定情况下的ItemsSource与DataContext的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!