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
基础教程推荐
- 当值可以是对象或空数组时反序列化 JSON 2022-01-01
- WPF 模态进度窗口 2022-01-01
- 如果有人提交恶意软件Nuget包怎么办? 2022-01-01
- .NET SerialPort DataReceived 事件未触发 2022-01-01
- 禁止输入少量字符,例如'<'、'&a 2022-01-01
- Azure Functions:CosmosDBTrigger 未在 Visual Studio 中触发 2022-01-01
- 如何使用 .Net 检查 Active Directory 服务器是否已启动并正在运行? 2022-01-01
- C# 从 List<List<int>> 中删除重 2022-01-01
- 我应该在后面的代码中直接使用 Linq To SQL 还是使 2022-01-01
- Moq It.Is<>不匹配 2022-01-01
