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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 《裕语言》速成开发手册3.0 官方用户交流:iApp开发交流(1) 239547050iApp开发交流(2) 10...
    叶染柒丶阅读 28,677评论 5 20
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 34,359评论 18 399
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 178,096评论 25 709
  • github 常用指令git clone 用于下载github仓库中代码到本地。例如仓库:git://gi...
    xqiugen阅读 329评论 0 1
  • 周五,我俩去了杭州。办完事儿,顺道闲走。 乘上公交车到杭州的九溪,一家餐馆用了午餐后,沿着九溪行走。 天阴沉着脸,...
    用心生活用字记录阅读 477评论 8 8

友情链接更多精彩内容