DataContext和ItemSource

一对多的关系
DataContext为上下文,绑定数据源
ItemSource取上下文中的某属性,会一级一级往上找属性

一般ItemSource的绑定,绑定到Grid/DataGrid一类容器上,底下的控件到这一级找

对比

1.DataContext 一般是一个非集合性质的对象,而ItemSource 更期望数据源是集合对象
2.DataContext 是 FrameworkElement 类中定义的一个依赖属性(Dependency property),ItemsSource是 在ItemsControl 类中定义的。所有继承自FrameworkElement 的类(控件)都可以使用DataContext属性并给其赋值,但我们只能给ItemsSource赋值为集合对象
3.DataContext不能产生模板,它只能用来筛选出数据,供其它控件来绑定。而ItemsSource主要作用就是给模板提供数据
4.DataContext主要用来抓取一些子元素需要使用的数据,以保证子元素能够顺利的使用数据。ItemsSource不会用来分享数据,它只是对定义好的元素有效

举例

后台

public partial class DataContextAndItemSource : Window { public DataContextAndItemSource() { InitializeComponent(); ObservableCollection<Student> students = new ObservableCollection<Student>(); students.Add(new Student() { Age = 15, Name = "吴芳", Sex = "女" }); students.Add(new Student() { Age = 16, Name = "刘洋", Sex = "男" }); //给DataContextAndItemSource的DataContext赋值 DataContext = students; } } 

前端

<!--ItemsSource绑定后台DataContext的数据-->
<DataGrid  AutoGenerateColumns="False" ItemsSource="{Binding}" CanUserAddRows="False" IsEnabled="False"> <DataGrid.Columns> <DataGridTextColumn Width="*" Binding="{Binding Name}" Header="名称" /> <DataGridTextColumn Width="*" Binding="{Binding Age}" Header="年龄" /> </DataGrid.Columns> </DataGrid> 
示例代码

https://github.com/zLulus/NotePractice/tree/dev3/WPF/WpfDemo/DataContextAndItemSource

转载于:https://www.cnblogs.com/Lulus/p/8150880.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值