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. selenium 3+python3.6+firefox的windows详细环境搭建以及小demo

    最近也是学习了下selenium和python,就记录了下在自己工作机上环境的搭建过程以及小demo 1,安装python3.6.1 我是去官网直接下载当前最新版的python3.6.1 官网网址为h ...

  2. Cow Exhibition (01背包)

    "Fat and docile, big and dumb, they look so stupid, they aren't much fun..." - Cows with G ...

  3. HDU 4821 字符串hash

    题目大意: 希望找到连续的长为m*l的子串,使得m个l长的子串每一个都不一样,问能找到多少个这样的子串 简单的字符串hash,提前预处理出每一个长度为l的字符串的hash值 #include < ...

  4. 最近切的两题SCC的tarjan POJ1236 POJ2186

    两题都是水题,1236第一问求缩点后入度为0的点数,第二问即至少添加多少条边使全图强连通,属于经典做法,具体可以看白书 POJ2186即求缩点后出度为0的那个唯一的点所包含的点数(即SCC里有多少点) ...

  5. bzoj 1251序列终结者 splay 区间翻转,最值,区间更新

    序列终结者 Time Limit: 20 Sec  Memory Limit: 162 MBSubmit: 4594  Solved: 1939[Submit][Status][Discuss] De ...

  6. 腾讯云CVM使用记录--使用root权限

    1.su root 指令 ,执行下列命令获取root权限: sudo /bin/su - root 注意:严禁执行password命令,root密码默认不能被修改.

  7. MTK andorid从底层到上层添加驱动

    1 [编写linux驱动程序] 1.1 一.编写驱动核心程序 1.2 二.配置Kconfig 1.3 三.配置Makefile 1.4 四.配置系统的autoconfig 1.5 五.编译 2 [编写 ...

  8. 【收藏】SSH原理与运用

    http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html http://www.ruanyifeng.com/blog/2011/12/ ...

  9. UINavigationController 小记

    1.以栈的形式管理视图控制器,push 和 pop 方法来弹入和弹出控制器,最多只能显示一个视图控制器. 2.使用pop方法可以移除栈顶控制器,当一个控制器被pop后,控制器内存会被释放了. 3.一层 ...

  10. Java面试题总结之OOA/D,UML,和XML

    全文字数:   2732 阅读时间:   大约9 分钟 1.UML 是什么?常用的几种UML图? 统一建模语言(Unified Modeling Language,UML)又称标准建模语言:常用图包括 ...