Silverlight数据绑定之DataGrid
Silverlight数据绑定之DataGrid
注:所有代码以C#为例
DataGrid绑定的数据对象:
1、DataGrid的ItemsSource数据必须是对象List
2、DataGrid Column的Binding必须是对象的属性
一、最基本的DataGrid绑定
1、前台
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中属性数写死的缺点。
代码如下:
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
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方法
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的更多相关文章
- Silverlight实例教程 – Datagrid,Dataform数据验证和ValidationSummary(转载)
Silverlight 4 Validation验证实例系列 Silverlight实例教程 - Validation数据验证开篇 Silverlight实例教程 - Validation数据验证基础 ...
- Silverlight实用示例 - DataGrid行详细信息的绑定DataGrid.RowDetailsTemplate
Silverlight实用示例 - DataGrid行详细信息的绑定DataGrid.RowDetailsTemplate 2012-12-28 21:04 来源:博客园 作者:chengxingli ...
- 【原创】有关Silverlight控件DataGrid的绑定数据后单元格单独复制的功能实现分析
前些日子,公司新需求需要对silverlight的datagrid进行局部任意单元格数据可复制,查阅了半天网络资料愣是没找到相关资料,开始还以为是silverlight的bug根部无法实现, 最后还是 ...
- silverlight数据绑定模式TwoWay,OneWay,OneTime的研究
asp.net开发中,数据绑定是一个很简单的概念,控件与数据绑定后,控件可以自动把数据按一定的形式显示出来.(当然控件上的值改变后,可以通过提交页面表单,同时后台服务端代码接收新值更新数据) silv ...
- silverlight 4中datagrid列标题和列内容居中问题,增加自增长列
转载:http://www.cnblogs.com/guoyuanwei/archive/2011/01/02/1924163.html 命名空间:xmlns:Primitives="clr ...
- Silverlight之我见——DataGrid数据验证
<UserControl x:Class="DataValidationSample.MainPage" xmlns="http://schemas.microso ...
- Silverlight数据绑定之 绑定一个int类型的属性
还就真心不会啊! 在类FunctionPanel中作如下定义: /// <summary> /// 鼠标状态 属性 /// </summary> public Dependen ...
- silverlight数据绑定
控件绑定 <Grid x:Name="LayoutRoot"> <StackPanel> <ScrollBar x:Name="bar&qu ...
- SilverLight: 数据绑定(1)-绑定到数据对象
ylbtech-SilverLight-DataBinding: Binding to Data Objects(绑定到数据对象) 1.A, Building a Data Object(创建一个数 ...
随机推荐
- 【06】sass编译工具(弃)
[06]编译工具(弃) SASS转译工具 除了使用sass命令来转译SASS文件之外,还可以借助第三方工具完成,目前世面上较为流行的转译工具主要有: Compass.app Scout Codekit ...
- 使用hadoop mapreduce分析mongodb数据
使用hadoop mapreduce分析mongodb数据 (现在很多互联网爬虫将数据存入mongdb中,所以研究了一下,写此文档) 版权声明:本文为yunshuxueyuan原创文章.如需转载请标明 ...
- 服务器架构及实战(架构篇)- PHP建站
概述 详解 PHP的环境搭建 PHP的帮助使用和配置文件 PHP的Hello World PHP的库函数调用 PHP的Web程序 PHP的函数和面向对象使用 PHP的数据库访问 Nginx安装和配置访 ...
- POJ 2288 汉密尔顿回路 DP解决
题目大意: 有n个岛屿,令Vi为岛屿Ci的权值.一条汉密尔顿路径C1,C2,C3...Cn的值为3部分 第一部分,将路径中的岛的权值相加,第二部分将每条边上的(Ci,Cj),加上所有的Vi*Vj 第三 ...
- PHP复制和移动目录
<?php //重命名一个文件或目录 rename("phpmyadmin", "phpadmin");//重命名成phpadmin /* * $dirs ...
- 最小生成树求法 Prim + Kruskal
prim算法的思路 和dijkstra是一样的 每次选取一个最近的点 然后去向新的节点扩张 注意这里的扩张 不再是 以前求最短路时候的到新的节点的最短距离 而是因为要生成一棵树 所以是要连一根最短的连 ...
- Back弹出AlertDialog
package com.pingyijinren.helloworld.activity; import android.content.DialogInterface; import android ...
- HDU1533 最小费用最大流
Going Home Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...
- java 数组 输入5名学生的成绩 得出平均分。
import java.util.Scanner; public class LianXi4{ public static void main(String[] args){ //创建长度为5的数组 ...
- java学习——关于java课件上动手动脑问题简单的分析
问题一:关于以下的代码为什么会产生错误的问题的简单分析. 第一个动手动脑提供了一下的代码,可以发现,在Foo的这个类中只定义了一个Foo(int)类型的构造函数,在之前的学习工程中,我们并没有接触到j ...