【SQL开源代码栏目提醒】:网学会员鉴于大家对SQL开源代码十分关注,论文会员在此为大家搜集整理了“WPF数据绑定到各种数据源系列 datatable数 - 互联网”一文,供大家参考学习
WPF数据绑定到各种数据源系列 datatable数 最近快有三、四个月没有发过一篇文章了忙于找工作最近终于找到一个哈哈由于这一个多星期一直在学习新技术WPF也就落下了今天有空将最近对wpf数据绑定的东西整理到此希望能帮助跟我一样的WPF菜鸟点启发。
以前的ASP.NET的数据绑定和WPF的数据绑定在某些方面还是相似的但是也有它优秀的方面。
WPF元素可以以公共语言运行库对象CLR对象和XML对象的形式绑定到各种数据源上的数据。
而且是新技术当然也就有它不同的绑定方式了。
这几天想这些数据源无非就是分为以下几种 1、ADO.NET中的DataTable 2、xml数据源 3、object数据源 4、数据集合数据源 5、元素控件属性 这里我们将通过做一些简单的实例来将控件绑定到各种数据源这样也就了解并熟练使用其中的方法。
一、绑定到DataTable数据源。
我们先来看一下结果图看不清的话双击看原图 这个功能也很简单也就光实现对于图上的列表的绑定。
只要实现将数据显示到listbox上就可以了首先我们先要得到这个所谓的DataTable。
看以下
代码 public void GetBookList SqlConnection cnnew SqlConnectionserver.uidsapwdwangdatabasebook SqlCommand cmnew SqlCommandselectfrom bookcn SqlDataAdapter danew SqlDataAdapter da.SelectCommandcm DataSet dsnew DataSet da.FilldsBookTable this.myListBox.DataContextds this.myListBox.SelectedIndex0 这里的获取数据的方式跟以前的是不是一样这里不同的是我们将ListBox的DataContext属性绑定到了DataSet 上。
下面我们先来看看DataContext属性。
Data Context获取或设置元素参与数据绑定时的数据上下文。
这是一个依赖项属性。
注1、数据上下文概念可以使元素从他们的父元素继承有关用于绑定的数据源。
以及绑定的其他特征如路径的信息。
比如stack Panel元素有个子元素Text Box如果你给Stack Panel的Data Context绑定了那么继续给Text Box绑定且只取你要的那个属性即可也就是说Text Box继承了父元素Stack Panel的数据源信息直接绑定。
2、Data Context是一个可绑定属性可用于一个上下文绑定到另一上下文的方案。
但是如果绑定Data Context则请不要建立循环绑定引用即不要将Data Context绑定到它本身因为Data Context属性具有属性值继承特性所以有可能产生这样的效果。
好了我们得到了数据就要将List Box绑定到数据源上这里主要就是分为了两部分一个是资源一个就是所谓的界面了。
我们先看资源看不清点击看原图这里规定了样式和模板内容。
因为我们的结果是显示出所有的书籍并且如果页数小于350页那么前景色就是红色如果大于350页就是绿色这样就需要有个转换器。
我们知道字符串的颜色和Foreground或Background有一个默认的转换器但是不是所有的都有因此我们就需要有个转换器因此定义了一个类以下是
代码 好了转换器我们也写好了现在就开始看
代码吧 我们在XAML中添加上对这个类的引用这样才能在XAML中调用这个转换器 xmlnscnvclr-namespaceBOOK 注意这里的cnv只是一个代号而已随便因此在资源里面我们直接注册上这个方法然后再下面调用 cnvMyConvert xKeyMyConvert/cnvMyConvert 分配ID然后OVER。
同时我们为了UI整体的效果一致于是在资源里面写了一个数据模板里面加了四个TextBlock分别来记录编号书籍名称页数。
因为我们在初始化或者页面Load的时候就将ListBox绑定到了DataSet中因此这样我们就可以直接在Text绑定的时候直接用Path来绑定其中的字段值。
TextBinding PathTitle 拓展 当然我们也可以用ListBox的ItemsSource属性来直接绑定但是不能将DataSet直接给它而是将它的表的DataView给他。
SqlConnection cnnew SqlConnectionserver.uidsapwdwangdatabasebook SqlCommand cmnew SqlCommandselectfrom bookcn SqlDataAdapter danew SqlDataAdapter da.SelectCommandcm DataSet dsnew DataSet da.FilldsBookTable //this.myListBox.DataContextds this.myListBox.ItemsSourceds.TablesBookTable.DefaultView this.myListBox.SelectedIndexmyindex 这样也是可以的。
当然这里是用的List Box正因为用了它而它不具备象List View那样同时让多个值绑定到一行才用到数据模板如果是List View的话那么我们就不需要用模板了结果图与上面相同。
下面是
代码 这样当然就是简单了。
对于data table一般就是这样用来绑定了。
它与ASP.NET的不同也就在此。
ASP.NET会隐式的将Data Set中的一个表转换成Data View的格式然后将数据控件绑定到上面而这里必须是显式的由我们来实现。
七乐无穷尽在新浪新版博客快来体验啊请点击进入