Silverlight数据绑定之DataGrid

时间:2011-08-03 01:59来源:网易博客 作者:Wilson. 点击:次
注:所有代码以C#为例 DataGrid绑定的数据对象: 1、DataGrid的ItemsSource数据必须是对象List 2、DataGrid Column的Binding必须是对象的属性 一、最基本的DataGrid绑定 1、前台 sdk:DataGridAutoGenerateColumns= True Height= 238 HorizontalAlignment= Left Margin= 170,12,0,0 Name= dataGridTest VerticalAlignment=
  

  注:所有代码以C#为例

  DataGrid绑定的数据对象:

  1、DataGrid的ItemsSource数据必须是对象List

  2、DataGrid Column的Binding必须是对象的属性

  一、最基本的DataGrid绑定

  1、前台

<sdk:DataGrid AutoGenerateColumns="True" Height="238" HorizontalAlignment="Left" Margin="170,12,0,0"
 Name="dataGridTest" VerticalAlignment="Top" Width="218" />

  2、后台:

//定义类

public class ContentData

{

public string SCHOOLID { get; set; }

public string NAME { get; set; }

public string SEX { get; set; }

}

//实例化对象List

List<ContentData> studentContentDataList = new List<ContentData>();

for (int i = 0; i < 10; i++)

{

studentContentDataList.Add(new ContentData() {

SCHOOLID="201104"+i.ToString(),

NAME="学生"+i.ToString(),

SEX=(i<5)?"男D":"女?"

});

}

//绑定

dataGridTest.ItemsSource = studentContentDataList;

  上面示例代码的结果如下:

  

  二、在ArcGIS中,DataGrid可以绑定featureset。

  可以采用将数据动态写入自定义的featureset,然后绑定DataGrid,可实现DataGrid列数动态生成,避免采用上面类、对象List中属性数写死的缺点。

  代码如下:

IList<Graphic> statisticFs = new List<Graphic>();

for(int i=0;i<10;i++)         //i为记录数

{

statisticFs.Add(new Graphic());

for (int j = 0; j < contentList.Count; j++)     //j为属性数(列数)

{

statisticFs[i].Attributes.Add(contentList[j].NAME, tempTotalList[j]);

}

}

//绑定

dataGridTest.ItemsSource = statisticFs;

dataGridTest.Columns.Clear();

for (int i = 0; i < contentList.count; i++)

{

DataGridTextColumn column = new DataGridTextColumn();

column.Header = contentList[i].ALIAS;

column.Binding = new System.Windows.Data.Binding("Attributes[" + contentList[i].NAME + "]");

StatisticResult.Columns.Add(column);

}

其中: List<ContentData> contentList = new List<ContentData>();

public class ContentData

{

public string NAME { get; set; }

public string ALIAS { get; set; }

}

  三、静态绑定

  DataGrid 的三种列:DataGridTextColumn、DataGridTemplateColumn、DataGridCheckBoxColumn

<DataGrid Name="dataGridColorPreview" AutoGenerateColumns="False" Height="221" HorizontalAlignment="Left"
 Margin="14,169,0,0" VerticalAlignment="Top" Width="304">

<DataGrid.Columns>

<DataGridTextColumn Header="编号" Binding="{Binding customId}" ></DataGridTextColumn>

<DataGridTemplateColumn Header="颜色">

<DataGridTemplateColumn.CellTemplate>

<DataTemplate>

<Rectangle Width="100" Height="20" Fill="{Binding colorStr}" />

</DataTemplate>

</DataGridTemplateColumn.CellTemplate>

</DataGridTemplateColumn>

<DataGridTextColumn Header="种类(范围)" Binding="{Binding range}" ></DataGridTextColumn>

</DataGrid.Columns>

</DataGrid>

  四、动态绑定:XamlReader方法

System.Text.StringBuilder sb = new System.Text.StringBuilder();

sb.Append("<Grid xmlns='http://schemas.microsoft.com/winfx/2006/xaml/

presentation' xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'  "+            "mlns:data='clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data' " +

"   xmlns:mc='http://schemas.openxmlformats.org/markup-compatibility/2006' ");

sb.Append("x:Name='tempGrid' >  ");

sb.Append("<data:DataGrid x:Name='grid1' Margin='1,1,1,1'

AutoGenerateColumns='False'>");

sb.Append("<data:DataGrid.Columns>");

sb.Append(" <data:DataGridTextColumn Width='160' Header='" + m_FieldName + "' Binding='{Binding Attributes[" + m_FieldsCNEN[m_FieldName] + "]}' />");

sb.Append(" </data:DataGrid.Columns>");

sb.Append("</data:DataGrid>");

sb.Append("  </Grid>  ");

Grid tempgrid = System.Windows.Markup.XamlReader.Load(sb.ToString()) as Grid;

又如:

using System.Windows.Data;
using System.Windows.Markup;
using System.Text;

...

DataGridTemplateColumn templateColumn = new DataGridTemplateColumn();
templateColumn.Header = "Birthday";
StringBuilder CellTemp = new StringBuilder();
CellTemp.Append("<DataTemplate ");
CellTemp.Append("xmlns='http://schemas.microsoft.com/client/2007' ");
CellTemp.Append("xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml' ");
//"YourNamespace" and "YourAssembly" 确保正确
CellTemp.Append("xmlns:local = 'clr-namespace:YourNamespace");
CellTemp.Append(";assembly=YourAssembly'>");
CellTemp.Append("<Grid>");
CellTemp.Append("<Grid.Resources>");
CellTemp.Append("<local:DateTimeConverter x:Key='DateConverter' />");
CellTemp.Append("</Grid.Resources>");
CellTemp.Append("<TextBlock ");
CellTemp.Append("Text = '{Binding Birthday, ");
CellTemp.Append("Converter={StaticResource DateConverter}}' ");
CellTemp.Append("FontFamily='Trebuchet MS' FontSize='11' ");
CellTemp.Append("Margin='5,4,5,4'/>");
CellTemp.Append("</Grid>");
CellTemp.Append("</DataTemplate>");
StringBuilder CellETemp = new StringBuilder();
CellETemp.Append("<DataTemplate ");
CellETemp.Append("xmlns='http://schemas.microsoft.com/client/2007' ");
CellETemp.Append("xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'>");
CellETemp.Append("<DatePicker ");
CellETemp.Append("SelectedDate='{Binding Birthday, Mode=TwoWay}' />");
CellETemp.Append("</DataTemplate>");
templateColumn.CellTemplate =
(DataTemplate)XamlReader.Load(CellTemp.ToString());
templateColumn.CellEditingTemplate =
(DataTemplate)XamlReader.Load(CellETemp.ToString());
targetDataGrid.Columns.Add(templateColumn);

  本文来自Wilson的博客,原文地址:http://blog.163.com/zwx_gis/blog/static/32434435201132382957968/

Silverlight数据绑定之DataGrid的更多相关文章

  1. Silverlight实例教程 – Datagrid,Dataform数据验证和ValidationSummary(转载)

    Silverlight 4 Validation验证实例系列 Silverlight实例教程 - Validation数据验证开篇 Silverlight实例教程 - Validation数据验证基础 ...

  2. Silverlight实用示例 - DataGrid行详细信息的绑定DataGrid.RowDetailsTemplate

    Silverlight实用示例 - DataGrid行详细信息的绑定DataGrid.RowDetailsTemplate 2012-12-28 21:04 来源:博客园 作者:chengxingli ...

  3. 【原创】有关Silverlight控件DataGrid的绑定数据后单元格单独复制的功能实现分析

    前些日子,公司新需求需要对silverlight的datagrid进行局部任意单元格数据可复制,查阅了半天网络资料愣是没找到相关资料,开始还以为是silverlight的bug根部无法实现, 最后还是 ...

  4. silverlight数据绑定模式TwoWay,OneWay,OneTime的研究

    asp.net开发中,数据绑定是一个很简单的概念,控件与数据绑定后,控件可以自动把数据按一定的形式显示出来.(当然控件上的值改变后,可以通过提交页面表单,同时后台服务端代码接收新值更新数据) silv ...

  5. silverlight 4中datagrid列标题和列内容居中问题,增加自增长列

    转载:http://www.cnblogs.com/guoyuanwei/archive/2011/01/02/1924163.html 命名空间:xmlns:Primitives="clr ...

  6. Silverlight之我见——DataGrid数据验证

    <UserControl x:Class="DataValidationSample.MainPage" xmlns="http://schemas.microso ...

  7. Silverlight数据绑定之 绑定一个int类型的属性

    还就真心不会啊! 在类FunctionPanel中作如下定义: /// <summary> /// 鼠标状态 属性 /// </summary> public Dependen ...

  8. silverlight数据绑定

    控件绑定 <Grid x:Name="LayoutRoot"> <StackPanel> <ScrollBar x:Name="bar&qu ...

  9. SilverLight: 数据绑定(1)-绑定到数据对象

    ylbtech-SilverLight-DataBinding: Binding to Data Objects(绑定到数据对象) 1.A, Building  a Data Object(创建一个数 ...

随机推荐

  1. SQL Server 上关于同一张表里的三级联动

    或许这并不能叫做三级联动,三级联动是很容易实现的东西,有明确的层级关系,一般分开三张表存储.我在公司的项目里遇到这样一个问题,同一张表里面,有分公司,客户,项目3种关系,他们的层级关系是这样:分公司- ...

  2. Python2和Python3共存安装robotframework

    1.下载Python2.Python3安装包 https://www.python.org/ 2.下载pip.tar.gz https://pypi.python.org/pypi/pip#downl ...

  3. jquery取当前节点的上级ID

  4. 局部二值模式(Local Binary Patterns)纹理灰度与旋转不变性

    Multiresolution Gray Scale and Rotation Invariant Texture Classification with Local Binary Patterns, ...

  5. 在RedHat 5下安装Oracle 10g详解(转)

    在RedHat 5下安装Oracle 10g详解(转) Posted on 2012-09-14 13:26 疯狂 阅读(5075) 评论(0)  编辑  收藏 所属分类: database .uni ...

  6. Nginx,Apache,Tomcat区别

    Nginx:一款能承受高并发的HTTP服务器,异步的,多个连接(万级别)可以对应一个进程,进行响应.基于事件驱动模型. Nginx优点:负载均衡.反向代理.处理静态文件优势. Apache:相对于Ng ...

  7. Java多线程分析案例

    1. 多线程的创建方式 (1).继承 Thread类:但Thread本质上也是实现了Runnable 接口的一个实例,它代表一个线程的实例,并且,启动线程的唯一方法就是通过 Thread 类的 sta ...

  8. 简论远程通信(RPC,Webservice,RMI,JMS的区别)

    RPC(Remote Procedure Call Protocol)RPC使用C/S方式,采用http协议,发送请求到服务器,等待服务器返回结果.这个请求包括一个参数集和一个文本集,通常形成“cla ...

  9. ubuntu 16.04上安装php5.6

    php --ini 按下面的步骤,在ubuntu 16.04上面安装成功了 php5.6 dpkg -l | grep php| awk '{print $2}' |tr "\n" ...

  10. VM Workstation的Unity Mode有什么用

    正常情况下,如果我启动了一个VM Workstaion的虚拟机,比如是一个Linux系统,并且没运行任何软件,进入Unity mode之后,我真实系统的左下角会有一个虚拟机的图标 点击这个图标可以打开 ...