为Binding指定源的方法

  • 把普通的CLR类型单个对象指定为Source

  包括.NET Framework自带类型的对象和用户自定义类型的对象。如果类型实现了INotifyPropertyChanged接口,则可通过在属性的Set语句里出发PropertyChanged事件来通知Binding来更新数据。具体例子参考这里

  • 把普通的CLR集合类型对象指定为Source

  包括数组、List<T>、ObservableCollection<T>等集合类型。实际工作中,我们经常需要把一个集合作为ItemContorl派生类的数据源来使用,一般是把控件的ItemSource属性使用Binding关联到一个集合对象上。

  WPF的列表式控件都派生自ItemControl,自然也都集成类ItemSource属性。ItemSource可以接收一个IEnumerable接口派生类的实例作为自己的值。只要我们为一个ItemControl对象设置了ItemSource属性,ItemControl对象就会自动迭代其中的数据元素、为每个数据元素准备一个条目容器,并使用Binding在条目容器与数据元素之间建立关联。

  比如我们要把一个List<Student>集合作为ListBox的ItemSource,让ListBox显示Student的Name,UI代码如下:

<Window x:Class="WpfApplication2.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="175" Width="225" Loaded="Window_Loaded">
    <StackPanel>
        <ListBox x:Name="listBox" Height="120" Margin="5"></ListBox>
    </StackPanel>
</Window>

  在Load里设置Binding,代码如下:

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            //准备数据
            List<Student> Students = new List<Student>()
            {
                new Student(){Id=1,Name="Tim",Age=19},
                new Student(){Id=2,Name="Tom",Age=18},
                new Student(){Id=3,Name="Kate",Age=17},
            };

            //为ListBox设置Binding
            this.listBox.ItemsSource = Students;
            this.listBox.DisplayMemberPath = "Name";
        }

  • 把ADO.NET数据对象指定为Source
  • 使用XmlDataProvider把XML数据指定为Source
  • 把依赖对象(Dependency Object)指定为Source
  • 把容器的DataContext指定为Source
  • 通过ElementName指定Source
  • 通过Binding的RelativeSource属性相对的指定Source
  • 把ObjectDataProvider对象指定为Source
  • 把使用Linq检索得到的数据对象作为Binding的源
时间: 2024-10-05 09:08:09

为Binding指定源的方法的相关文章

数据绑定(三)为Binding指定绑定源的几种方法

原文:数据绑定(三)为Binding指定绑定源的几种方法 Binding的源是数据的来源,所以,只要一个对象包含数据并能通过属性把数据暴露出来,它就能当作Binding的源来使用,常用的办法有: 一.把普通CLR类型单个对象指定为Source 如果类型实现了INotifyPropertyChanged接口,则可通过在属性的set语句中激发PropertyChanged事件来通知Binding数据已被更新 二.把普通CLR集合类型对象指定为Source 一般是把控件的ItemsSource属性使用

CentOS更新yum源的方法

一.下载国内比较稳定的yum源,我这里下载163的源 同时我使用的是CentOS6.2的x86_64版本,所以下载的是CentOS6-Base-163.repo 请根据,如下方法确认自己系统的版本 [[email protected] ~]# lsb_release -a LSB Version: :core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4

解决安装rpm包依赖关系的烦恼 - yum工具介绍及本地源配置方法

版权声明:本文发布于http://www.cnblogs.com/yumiko/,版权由Yumiko_sunny所有,欢迎转载.转载时,请在文章明显位置注明原文链接.若在未经作者同意的情况下,将本文内容用于商业用途,将保留追究其法律责任的权利.如果有问题,请以邮箱方式联系作者([email protected]). 1.背景概述 在实际生产环境下,对于在linux系统上安装rpm包,主要面临两个实际的问题1)安装rpm包过程中,不断涌现的依赖关系问题,导致需要按照提示或者查询资料,手工安装更多的

用vs2013编译lua源码方法(一)

用vs2013编译lua源码方法 来源:网络    编辑:admin 1.下载lua源码:lua-5.2.3.tar.gz,解压 2.用vs2013建立一个win32工程: 1)下载后解压到一个目录下,这里假设解压到  F:\lua-5.2.3  注意下载的版本,如果是5.2.x,后面代码中的C API发生了改变 2)在VS2010中新建一个静态库项目,项目命名为lua   a. 选择新建 Win32 console project b. 在wizard界面选择 static Library:不

iOSCollectioView滚动到指定section的方法

CollectioView滚动到指定section的方法 项目中的需求:collectionView顶部有一个scrollView组成的标签,点击标签,让collectionView滚动到指定的行,滚动collectionView自动切换到顶部指定的标签 实现方法如下: 1. 保证collectionView全部加载完毕,我这里通过一个bool的标志位来标示 -(void)collectionView:(UICollectionView *)collectionView willDisplayC

debian 配置apt-get源的方法

编辑/etc/apt/sources.list文件 [email protected]:~# cat /etc/apt/sources.list # # deb cdrom:[Debian GNU/Linux 7 _Wheezy_ - Official Snapshot amd64 LIVE/INSTALL Binary 20131013-23:23]/ wheezy main #deb cdrom:[Debian GNU/Linux 7 _Wheezy_ - Official Snapshot

创建运行时类的对象,调用指定的属性方法构造器

1 使用newInstance(),实际上是调用运行时空参的构造器    注意构造器的权限修饰符要足够,同时必须有一个空参的构造器. 2 调用指定的属性方法构造器 package lianxi1; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Meth

JavaScript判断数组是否包含指定元素的方法

本文实例讲述了JavaScript判断数组是否包含指定元素的方法.分享给大家供大家参考.具体如下: 这段代码通过prototype定义了数组方法,这样就可以在任意数组调用contains方法 /** * Array.prototype.[method name] allows you to define/overwrite an objects method * needle is the item you are searching for * this is a special variab

UBUntu 软件 源配置方法

最近公司产品需要增加一个功能,就是版本自动更新,使用apt-get 实现.apt-get 软件源配置的方法,参见本人资源里的共享.下面是代码中作为升级的一部分. FILE *fp; char buffer[256]; char source_ok[] = "Reading package lists..."; if(0 > system("mv -f /etc/apt/sources.list /etc/apt/sources.list.upgrade"))