(牛人莫入) Silverlight 3 之控件DataGrid

上一篇文章中讲到了数据展示控件DataForm简单的用法,接下来将代给大家另一个数据展示的控件DataGrid;

它的用法也很简单;

说明:本篇内容是自身的学习笔记,提供学习SL的朋友,只供参考;

阅读对象:只针对SL的初学者阅读,如果你是牛人请绕道而行;谢谢;

开发环境:VS2008 + SP1 ,SL3,windos Server 2003(全为中文版)

一、最终运行结果如下:

1.自定义列头

image

2.默认列头

image

3.列头拉到

image 

二、开发步骤

1.打开VS 2008 新建一个SL 的项目文件,并在MainPage.xaml文件中添加如下代码;

<data:DataGrid x:Name="MyDataGrid" Width="390" Height="300"
       ItemsSource="{Binding}" AutoGenerateColumns="True"  >
</data:DataGrid>
参数说明:
AutoGenerateColumns 自动生成列头
ItemsSource 绑定数据

 

2.新建一个数据访问类,取名为Customer,代码如下:

public class Customer
{
public string UserName { get; set; }
public Sex UserSex { get; set; }
public string UserAddress { get; set; }
}

public enum Sex
{
male,
female
}
3.对后台数据的绑定,示例代码如下:
public void BindDataGrid()
{
System.Collections.ObjectModel.ObservableCollection<Customer> customer = 
new System.Collections.ObjectModel.ObservableCollection<Customer>();
customer.Add(new Customer() { UserAddress = "四川", UserName = "曹代明", UserSex = Sex.male });
customer.Add(new Customer() { UserAddress = "北京", UserName = "李四", UserSex = Sex.female });
customer.Add(new Customer() { UserAddress = "天津", UserName = "张三", UserSex = Sex.male });
customer.Add(new Customer() { UserAddress = "西安", UserName = "王伍", UserSex = Sex.male });
customer.Add(new Customer() { UserAddress = "台湾", UserName = "杨七", UserSex = Sex.female });
MyDataGrid.DataContext = customer;
}
二、自定义列头,代码如下:
<Grid x:Name="LayoutRoot">
    <data:DataGrid x:Name="MyDataGrid" Width="390" Height="300"
     ItemsSource="{Binding}" AutoGenerateColumns="False" 
     CanUserResizeColumns="False" CanUserSortColumns="False"
     ColumnHeaderHeight="50" ColumnWidth="130">
     <data:DataGrid.Columns >
        <data:DataGridTextColumn Header="姓名"  Binding="{Binding UserName}"/>
        <data:DataGridTextColumn Header="性别" Binding="{Binding UserSex}"/>
        <data:DataGridTextColumn Header="地址" Binding="{Binding UserAddress}"/>           
        </data:DataGrid.Columns>
    </data:DataGrid>
</Grid>

这个地方有一点像ASP.NET 中的DataGrid的数据绑定,也是创建一个模板列的数据;

参数说明:

CanUserResizeColumns 垃动列头,默认为TRUE
CanUserSortColumns 排序,默认为TRUE
ColumnHeaderHeight 列头的高度
ColumnWith 列头的宽度
Binding 数据绑定 {Binding}全部数据,{Binding 字段}表示绑定指定的字段

控件的属性很多,在这里就不为每一个属性说明;

三、结束语

DataGrid控件在项目中用得非常的广泛,在用的时候它自身提供的东西很少,不能满足大家不同项目中的要求,所以往往

在项目中还得对控件进行扩展满足自己的要求;本示例就没有更层次的去写,只是代给大家和自身的一个入门级的DEMO,希望对刚接足SL的新朋友有所帮助;

posted @ 2009-08-07 16:25  阳光追梦  阅读(3686)  评论(8编辑  收藏  举报
/*快速评论*/ #div_digg { position: fixed; bottom: 10px; right: 15px; border: 2px solid #ECD7B1; padding: 10px; width: 140px; background-color: #fff; border-radius: 5px 5px 5px 5px !important; box-shadow: 0 0 0 1px #5F5A4B, 1px 1px 6px 1px rgba(10, 10, 0, 0.5); } /** 不知道为什么页面加载完成时还读不到div_digg。可能也是动态生成的。 所以这里只能用定时器 不断的读取,当读取到了再给它动态添加快捷按钮 **/ //自定义 定时器[当元素加载完成是执行回调函数] function customTimer(inpId,fn) { if ($(inpId).length) { fn(); } else { var intervalId = setInterval(function () { if ($(inpId).length) { //如果存在了 clearInterval(intervalId); // 则关闭定时器 customTimer(inpId,fn); //执行自身 } }, 100); } } //页面加载完成是执行 $(function () { customTimer("#div_digg", function () { var div_html = "
\ 关注\  | \ 顶部\  | \ 评论\
"; $("#div_digg").append(div_html); //tbCommentBody }); });