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
- WebMatrix WebSecurity PasswordSalt 2022-01-01
- C# 中多线程网络服务器的模式 2022-01-01
- 带有服务/守护程序应用程序的 Microsoft Graph CSharp SDK 和 OneDrive for Business - 配额方面返回 null 2022-01-01
- C#MongoDB使用Builders查找派生对象 2022-09-04
- 良好实践:如何重用 .csproj 和 .sln 文件来为 CI 创建 2022-01-01
- Web Api 中的 Swagger .netcore 3.1,使用 swagger UI 设置日期时间格式 2022-01-01
- 在哪里可以找到使用中的C#/XML文档注释的好例子? 2022-01-01
- MoreLinq maxBy vs LINQ max + where 2022-01-01
- 输入按键事件处理程序 2022-01-01
- 如何用自己压缩一个 IEnumerable 2022-01-01
