快捷搜索:  as  2018  FtCWSyGV  С˵  test  xxx  Ψһ  w3viyKQx

澳门新葡亰平台游戏b_龟发之家论坛



本文源代码下载地址:

http://flashview.ddvip.com/2008_10/20081025.rar

在WinForm或者WebForm中我们有一大年夜批的Grid控件供我们应用,DataGridView,GridView,Repeater等等,这样的网格数据空间给我们供给了极大年夜的方便去让数据以可定义的要领显示并供给诸如导航,分页,排序,过滤,数据更新等附加操作 ,而法度榜样员所必要付出的却很少。但在WPF中我们平日并不具备这么良好的网格控件,而要做到这些除了用Grid.RowDefinitions和Grid.ColumnDefinitions共澳门新葡亰平台游戏b同一路造出一个Grid,或者使用ListView控件的ListView.GridView视图,我们似乎别无选择。而且对付这些的应用并不具备像WinForm中那么强大年夜的功能,更多的必要法澳门新葡亰平台游戏b度榜样员去节制数据的展现并供给附加操作的实现。微软新近在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”.

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

private void Window_Loaded(object sender, RoutedEventArgs e)

{

using (NorthwindDataContext dc = new NorthwindDataContext())

{

NorthwindDataGrid.ItemsSour澳门新葡亰平台游戏bce = dc.Customers.ToList();

}

}

留意示例中应用了LINQ来获取Northwind数据库中Customers表的数据并付与DataGrid作为数据源。和在ASP.NET/WinForm中相同,将List<>数据直接付与ItemSource属性即可。这便是你必要做的所有统统,简单吧?看看您的成果.

哦,真的很Nice,由于我们仅仅只写了2行代码而已,就完成了这么些功能,太美妙了。迫在眉睫想试试了吧?快来吧。

2.    DataGrid Styling

你肯定不想让你的数据展现给人一个过于质朴的感到吧?让你的Grid变得更漂亮些,这是你必须做的,由于你在用WPF,你不能让客户感觉你是用通俗的.NET法度榜样去瞎搅他的。当然,供给给客户一个面貌一新而美妙的User eXperience不是一个法度榜样员就能做好的,那必要Designer的相称供献。这里,只是供给个思路给大年夜家去改变DataGrid的默认面目。

很多时刻我们对付每笔记录都有一个主键去标明,而在营业逻辑中我们也用这些键值去标识一个事物。为了让这些更活跃的体现出来,可以斟酌加亮或者以特殊的要领显示出来。对付Customer来说,CustomerID便是能独一标识这个客户的键值,我们为了更方便,将其以不合的风格显示。由于在WPF中Binding是我们最爱好去用的器械之一,分外是你在必要处置惩罚与数据更新有关的器械时,它会赞助你很多。我们将某个列的是否主键(独一标识工具)设为一个属性IsPrimaryKey,然后使用DataTrigger(由于是.NET Property)就可以动态更新资本。对付每一列,你都可以经由过程这个属性去判断是否必要去以特定风格显示。

这段代码去数据库中去查找当前列是否是Primary Key,假如是将天生一个自定义的Column类型(承袭于DataTextColumn)并将这个实例付与当前列的实例工具,也便是说假如是Primary key那当前列便是CustomColumn,就具有IsPrimaryKey澳门新葡亰平台游戏b属性。我们的目的是要给主键添加风格,下边就来给他们定义样式了。记着刚才说的列的样式的影响实际上每个单元格的样式组成的,你就不难理解下边的样式定义:

运行你的法度榜样看看有没有效果呢?是不是看上去好些了?但这不是整个,你仍旧必要更好的去为这些列做你自己的样式改动。或许,你可以自己试试值转换器(在前边的文章中讲过),两者共同会更好些。

DataGrid供给数据编辑,添加数据,删除数据这些功能,着实这和DataGrid的事情要领是分不开的。DataGrid在背后是由IEditableCollectionView来支持的,而L澳门新葡亰平台游戏bistCollectionView 和 BindingListCollectionView两个类实现了对这个接口的支持。简单来说,ListCollectionView是为ItemsControl的数据源创建视图,你可以在视图上来利用Group,Sort, Update等更高档的功能。BindingListCollectionView供给了为ADO.NET DataView对ItemsControl天生体现视图的措施。在编辑某行某列时,对表格中数据的特殊标注会很有效。这是根据IsEditing依附属性来做触发器源并孕育发生响应样式变化看护的:

很清楚的你会知道你在编辑哪笔记载的哪个值:

3.    节制更多Data Grid的视觉体现

无意偶尔候让用户可以随意变动DataGrid的某些体现要领更具有亲和力,比如背景颜色,GridLine等等,而这统统由于绑定的缘故让你很省心。由于都是依附属性,利用TwoWay绑定模式,WPF会自动搞定这统统,一段代码加入到XAML中试试它能做到什么?

All

Horizontal

None

Vertical

看到结果了吧?很美妙,但历程很简单,对吧?你可以用Converter来赞助你一路做些工作,而且对付一些诸如IsFrozen等这些Column自带属性你并不用自定义来实现,不是更简单吗?

DataGridComboBoxColumn它老是能够赞助我们做很多工作,直接上代码吧,你发明它的确太轻易了。

Chocolate

Vanilla

对付编辑时孕育发生一个可选列表,你也可以经由过程定义编辑模板来孕育发生,就像在ASP.NET中的GridView的TemplateColumn一样。这样在很多时刻可能更有用,由于对编辑模板中的ComboBox控件来说你可以经由过程Binding给ItemSource来绑定命据,这样更相符你的利用处景。

Images2.jpg

Images3.JPG

Images4.jpg

Images5.jpg

Images6.jpg

仅仅是DataGird的初步先容

您可能还会对下面的文章感兴趣: