WPF学习之使用DataGrid

在WinForm或者WebForm中我们有一大批的Grid控件供我们使用,DataGridView,GridView,Repeater等等,这样的网格数据空间给我们提供了极大的方便去让数据以可定义的方式显示并提供诸如导航,分页,排序,过滤,数据更新等附加操作 ,而程序员所需要付出的却很少。但在WPF中我们通常并不具备这么优越的网格控件,而要做到这些除了用Grid.RowDefinitions和Grid.ColumnDefinitions配合一起造出一个Grid,或者利用ListView控件的ListView.GridView视图,我们好像别无选择。而且对于这些的使用并不具备像WinForm中那么强大的功能,更多的需要程序员去控制数据的展现并提供附加操作的实现。微软新近在CodePlex上发布了WPF Toolkit,它就提供了WPF版本的DataGrid,一如既往的强大和易用,今天我们就一起来体验一下这个强大的控件。

1.Start with DataGrid

WPF开发团队专门重写了一套DataGrid让其可以运行于WPF之上,在http://www.codeplex.com/wpf 你可以获得这个ToolKit的源代码及其DLL文件,具体是如何写这些控件的,作为大家对WPF感兴趣的,您需要去研究一下。因为很值得去研究。

获得WPFToolkit.dll文件后,我们在项目中添加对它的引用,在XAML中因为WPFToolKit的命名空间不属于WPF和.NET Framework默认的映射命名空间内的一部分,所以需要在XAML文件中首先声明对其命名空间的引用,继而声明一个实例对象。为了简化我们的程序,这里我们将让Grid控件自己根据数据源生成列:AutoGenerateColumns=”True”.

<Window x:Class="DataGridIntro.SimpleDataGrid"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
   xmlns:dg="clr-namespace:Microsoft.Windows.Controls;assembly=WpfToolkit"
  Loaded="Window_Loaded"
  Title="Simple DataGrid" Height="600" Width="800">
  <Grid>
    <dg:DataGrid x:Name="NorthwindDataGrid" AutoGenerateColumns="True" />
  </Grid>
</Window>

和普通WinForm控件一样,接下来需要对其数据源赋予数据。不同的是和所有WPF数据控件相同,这里的数据源属性为ItemSource.之前我们声明过Window的Loaded事件,直接在其中赋值即可:

private void Window_Loaded(object sender, RoutedEventArgs e)
{
   using (NorthwindDataContext dc = new NorthwindDataContext())
   {
      NorthwindDataGrid.ItemsSource = dc.Customers.ToList();
   }
}

注意示例中使用了LINQ来获取Northwind数据库中Customers表的数据并赋予DataGrid作为数据源。和在ASP.NET/WinForm中相同,将List<>数据直接赋予ItemSource属性即可。这就是你需要做的所有一切,简单吧?看看您的成果.


哦,真的很Nice,因为我们仅仅只写了2行代码而已,就完成了这么些功能,太美妙了。迫不及待想试试了吧?快来吧。

时间: 2024-07-28 16:38:32

WPF学习之使用DataGrid的相关文章

WPF学习备忘(3) Datagrid中的数据处理

如何从 Datagrid 中获得单元格的内容与 使用值转换器进行绑定数据的转换IValueConverter 一.如何从 Datagrid 中获得单元格的内容 DataGrid 属于一种 ItemsControl, 因此,它有 Items 属性并且用ItemContainer 封装它的 items. 但是,WPF中的DataGrid 不同于Windows Forms中 的 DataGridView. 在DataGrid的Items集合中,DataGridRow是一个Item,但是,它里面的单元格

WPF使用FixedDocument打印DataGrid的问题

问题描述 我在WPF程序中使用PrintDialog进行打印FixedDocument,FixedDocument里面有个DataGrid,打印前设置了数据源,在win8下直接打印(不经过xps预览)很正常,但是换到windowsxp上,打印出的DataGrid里没有数据,并且若先使用xps文件和DocumentViewer进行打印预览,再使用DocumentViewer上的打印按钮打印,也没问题.正常情况:异常情况: 解决方案 解决方案二:和我遇到的问题一样,我是在win8上可以打印控件,但到

JQuery EasyUI学习教程之datagrid 添加、修改、删除操作_jquery

一篇关于JQueryEasyUI学习之datagrid 添加.修改.删除 学习笔记教程有需要了解的朋友可参考本的笔记,批量删除,双击表单修改.选中行修改,增加行修改,再有就是扩展editor的方法,无需废话,直接上代码,代码中的注释写的很详细 <script type="text/javascript" charst="utf-8">var editFlag = undefined;//设置一个编辑标记 //因为layout框架指向href时,只取htm

WPF学习之依赖属性和附加属性

依赖属性(Dependency Property) .NET Framework 3.0引入了一个新的属性类型叫依赖属性, WPF,WF都在使用依赖属性用来实现样式化,数据绑定等.我们更多的使用依赖属性是为了让父元素的属性值在逻辑树上慢慢的传递到其子元素中,从而可以在整个可是父元素的逻辑子元素中共享属性值.WF就是依靠依赖属性来在工作流中的各Activity间传递属性值的. 所以,依赖属性内建的传递变更通知的能力是其最大特征. 如果你想让属性在一个包含内容子控件树的整个逻辑控件树中都有效并共享值

WPF学习之资源-Resources

WPF通过资源来保存一些可以被重复利用的样式,对象定义以及一些传统的资源如二进制数据,图片等等,而在其支持上也更能体现出这些资源定义的优越性.比如通过ResourceDictionary的支持就可以通过资源来实现换肤功能,在ExpressionBlend中设计的酷炫造型也可以通过导出成资源来很容易的被程序员所引用,本地化的实现,访问另外程序集的嵌入式资源等等.这些都给我们提供了丰富的手段通过资源访问架构来构建丰富的富媒体应用程序.本文简单讲解了WPF Resources的分类及其常见用法,并简单

WPF学习备忘(4) 用WPF打个勾画个叉

<Path Grid.Column="2" Data="M43,5 L20,40 20,40 0,20 6,15 18,26 37,7 43,5 z" Fill="Green" Margin="5" Stretch="Fill" HorizontalAlignment="Right"/> <Path Margin="5" Data="M50

WPF学习备忘(2)WPF获取和设置鼠标位置与progressbar的使用方法

一.WPF 中获取和设置鼠标位置 方法一:WPF方法 Point p = Mouse.GetPosition (e.Source as FrameworkElement); Point p = (e.Source as FrameworkElement).PointToScreen(pp); 方法二: API方法 /// <summary> /// 设置鼠标的坐标 /// </summary> /// <param name="x">横坐标</

WPF学习之绑定—Validation Rule和Binding Group

在上一篇文章中我们讨论了有关WPF绑定的知识点,现在我们可以很容易的将业务数据作为源绑定到WPF控件并可以通过创建不同的Data Template后来以特定的样式展现.而作为这个最常用的功能我们可以通过Two Way的绑定模式与界面交互,而在这个时候我们就需要类似于ASP.NET中Validator一样的东西来限制或者说校验数据有效性.ValidationRule就是为这样的应用而生的.本文将详细讨论如何应用验证规则和自定义错误模板. 我们首先来看看WPF中有关数据验证规则相关的几个常用类: ·

WPF学习之数据绑定

WPF中的数据绑定提供了很强大的功能.与普通的WinForm程序相比,其绑定功能为我们提供了很多便利,例如Binding对象的自动通知/刷新,Converter,Validation Rules,Two Way Binding等功能,省去了很多维护的繁琐工作.另外对于WPF中提供的数据模板功能,让我们可以轻松定制可以被复用的控制呈现的模块-但这是以数据绑定为前提来做到轻松易用的效果的.数据提供者例如XmlDataProvider和ObjectDataProvider更是简化了将对象以特定方式绑定