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
基础教程推荐
- 如何激活MC67中的红灯 2022-01-01
- 如何在 IDE 中获取 Xamarin Studio C# 输出? 2022-01-01
- 将 Office 安装到 Windows 容器 (servercore:ltsc2019) 失败,错误代码为 17002 2022-01-01
- 有没有办法忽略 2GB 文件上传的 maxRequestLength 限制? 2022-01-01
- 将 XML 转换为通用列表 2022-01-01
- MS Visual Studio .NET 的替代品 2022-01-01
- 为什么Flurl.Http DownloadFileAsync/Http客户端GetAsync需要 2022-09-30
- SSE 浮点算术是否可重现? 2022-01-01
- c# Math.Sqrt 实现 2022-01-01
- rabbitmq 的 REST API 2022-01-01