ItemsSource vs DataContext in binding case(绑定情况下的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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:绑定情况下的ItemsSource与DataContext
 
				
         
 
            
        基础教程推荐
- 全局 ASAX - 获取服务器名称 2022-01-01
- 是否可以在 asp classic 和 asp.net 之间共享会话状态 2022-01-01
- 从 VS 2017 .NET Core 项目的发布目录中排除文件 2022-01-01
- JSON.NET 中基于属性的类型解析 2022-01-01
- 在 VS2010 中的 Post Build 事件中将 bin 文件复制到物 2022-01-01
- 将事件 TextChanged 分配给表单中的所有文本框 2022-01-01
- 错误“此流不支持搜索操作"在 C# 中 2022-01-01
- 如何动态获取文本框中datagridview列的总和 2022-01-01
- 经典 Asp 中的 ResolveUrl/Url.Content 等效项 2022-01-01
- 首先创建代码,多对多,关联表中的附加字段 2022-01-01
 
    	 
    	 
    	 
    	 
    	 
    	 
    	 
    	 
						 
						 
						 
						 
						 
				 
				 
				 
				