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

2012-12-28 21:04 来源:博客园 作者:chengxingliang 字号:T|T

[摘要]本文介绍Silverlight实用示例之DataGrid行详细信息的绑定DataGrid.RowDetailsTemplate,并提供详细的示例代码供参考。

在Silverlight中的DataGrid控件使用中我们想点击其中一行并且看这一行的详细信息应该如何做呢?而且这个详细信息是多行的数据,而非简单的几个属性。

在这里我们使用DataGrid.RowDetailsTemplate来设置或者获取行详细信息。首先我们准备一个DataGrid命名为A,设置其RowDetailsVisibilityMode="VisibleWhenSelected" (行详细信息模板的显示模式是当这行被选中的时候展开这行的详细信息。)然后再为A设置DataGrid.RowDetailsTemplate模板,并且在这个模板中添加一个DataGrid命名为B,这就是前台的XAML代码,在后台中我们设置一个实体集AList绑定到A的DataGrid,然后在AList实体集中有一个属性是BList,这个就是多行的详细信息。将BList详细信息字段绑定到B的DataGrid控件的ItemsSource即可。

下面我们来看看这个简单的应用技巧的Xaml代码如下:

1 <Grid x:Name="LayoutRoot" Background="White">
2 <!--这里是第一个DataGrid,其DataGrid.RowDetailsTemplate模板会绑定另外一个DataGrid以显示其详细信息-->
3 <sdk:DataGrid x:Name="gridEmployee" CanUserReorderColumns="False" CanUserSortColumns="False"
4 RowDetailsVisibilityMode="VisibleWhenSelected"
5 HorizontalAlignment="Center" ScrollViewer.VerticalScrollBarVisibility="Auto"
6 Height="200" AutoGenerateColumns="False" Width="422" VerticalAlignment="Center">
7 <sdk:DataGrid.Columns>
8 <sdk:DataGridTextColumn Width="150"
9 Header="用户名"
10 Binding="{Binding UserName}"/>
11 <sdk:DataGridTextColumn Width="150"
12 Header="用户密码"
13 Binding="{Binding UserPwd}"/>
14 </sdk:DataGrid.Columns>
15 <sdk:DataGrid.RowDetailsTemplate>
16 <DataTemplate>
17 <!--这里是第二个DataGrid显示详细信息-->
18 <sdk:DataGrid AutoGenerateColumns="False" ItemsSource="{Binding UserDetailInfomation}"
19 HeadersVisibility="None">
20 <sdk:DataGrid.Columns>
21 <sdk:DataGridTextColumn Width="100"
22 Header="地址"
23 Binding="{Binding UserAddress}"/>
24 <sdk:DataGridTextColumn Width="100"
25 Header="城市"
26 Binding="{Binding UserCity}"/>
27 <sdk:DataGridTextColumn Width="100"
28 Header="国籍"
29 Binding="{Binding UserCountry}"/>
30 <sdk:DataGridTextColumn Width="100"
31 Header="类型"
32 Binding="{Binding UserState}"/>
33 </sdk:DataGrid.Columns>
34 </sdk:DataGrid>
35 </DataTemplate>
36 </sdk:DataGrid.RowDetailsTemplate>
37 </sdk:DataGrid>
38 </Grid>

然后我们来看看他的数据源的Xaml.cs代码如下:

1 public partial class MainPage : UserControl
2 {
3 public MainPage()
4 {
5 InitializeComponent();
6 this.gridEmployee.ItemsSource = new UserInfo().GetEmployeeData();
7 }
8 }
9 /// <summary>
10 /// 用户信息
11 /// </summary>
12 public class UserInfo
13 {
14 public string UserName { get; set; }
15 public string UserPwd { get; set; }
16 /// <summary>
17 /// 用户详细信息
18 /// </summary>
19 public List<UserDetailInfo> UserDetailInfomation{get;set;}
20 public UserInfo()
21 { }
22 /// <summary>
23 /// 获取用户信息的实例
24 /// </summary>
25 /// <returns></returns>
26 public List<UserInfo> GetEmployeeData()
27 {
28 List<UserInfo> employees = new List<UserInfo>();
29 employees.Add
30 (
31 new UserInfo
32 {
33 UserName = "李伟",
34 UserPwd = "1333821",
35 UserDetailInfomation = new List<UserDetailInfo>()
36 {
37 new UserDetailInfo()
38 {
39 UserAddress="四川省成都市",
40 UserCity="成都",
41 UserCountry="中国",
42 UserState="当前所在地"
43 },
44 new UserDetailInfo()
45 {
46 UserAddress="四川省内江市",
47 UserCity="内江",
48 UserCountry="中国",
49 UserState="出生地"
50 }
51 }
52 });
53 employees.Add
54 (
55 new UserInfo
56 {
57 UserName = "Json",
58 UserPwd = "json282",
59 UserDetailInfomation = new List<UserDetailInfo>()
60 {
61 new UserDetailInfo()
62 {
63 UserAddress="广东省广州市",
64 UserCity="广州",
65 UserCountry="中国",
66 UserState="当前所在地"
67 },
68 new UserDetailInfo()
69 {
70 UserAddress="广东省茂名市",
71 UserCity="茂名",
72 UserCountry="中国",
73 UserState="出生地"
74 }
75 }
76 });
77 employees.Add
78 (
79 new UserInfo
80 {
81 UserName = "刘敏",
82 UserPwd = "motorola",
83 UserDetailInfomation = new List<UserDetailInfo>()
84 {
85 new UserDetailInfo()
86 {
87 UserAddress="湖南省长沙市",
88 UserCity="长沙",
89 UserCountry="中国",
90 UserState="当前所在地"
91 },
92 new UserDetailInfo()
93 {
94 UserAddress="湖南省长沙市",
95 UserCity="长沙",
96 UserCountry="中国",
97 UserState="出生地"
98 }
99 }
100 });
101 return employees;
102 }
103 }
104 /// <summary>
105 /// 用户详细信息的实体
106 /// </summary>
107 public class UserDetailInfo
108 {
109 public string UserAddress { get; set; }
110 public string UserCity { get; set; }
111 public string UserState { get; set; }
112 public string UserCountry { get; set; }
113 }

最后我们来看看它的运行效果:

源码下载:http://files.cnblogs.com/chengxingliang/SLDataGridRowDetail.zip。

Silverlight实用示例 - DataGrid行详细信息的绑定DataGrid.RowDetailsTemplate的更多相关文章

  1. DataGrid行详细信息的绑定--DataGrid.RowDetailsTe(转载)

    在Silverlight中的DataGrid控件使用中我们想点击其中一行并且看这一行的详细信息应该如何做呢?而且这个详细信息是多行的数据,而非简单的几个属性. 在这里我们使用DataGrid.RowD ...

  2. easyui datagrid行合并

    easyui datagrid行合并 合并方法 /** * EasyUI DataGrid根据字段动态合并单元格 * 参数 tableID 要合并table的id * 参数 colList 要合并的列 ...

  3. easyUI 展开DataGrid里面的行显示详细信息

    http://blog.csdn.net/yanghongchang_/article/details/7854156原著 datagrid 可以改变它的view(视图)去显示不同的效果.使用详细视图 ...

  4. 在命令行cmd 下,输入dxdiag 查看关于电脑许多硬件的详细信息

    输入命令就可以查看本机的很多硬件的详细信息: 在命令行cmd 下,输入dxdiag  查看关于电脑许多硬件的详细信息

  5. SQL SERVER统计服务器所有的数据库(数据库文件)、表(表行数)、字段(各字段)等详细信息

    原文:SQL SERVER统计服务器所有的数据库(数据库文件).表(表行数).字段(各字段)等详细信息 USE STAT GO SET NOCOUNT ON IF EXISTS(SELECT 1 FR ...

  6. windows系统通过命令行查看配件的详细信息

    今天我在工作中遇到这样一个问题:客户服务器用的是win 2012系统,不打开机箱,不借助其他类似于鲁大师软件的情况下查看内存条的详细信息 刚开始的时候我通过systeminfo命令,只能查出来总的内存 ...

  7. 利用Scrapy爬取所有知乎用户详细信息并存至MongoDB

    欢迎大家关注腾讯云技术社区-博客园官方主页,我们将持续在博客园为大家推荐技术精品文章哦~ 作者 :崔庆才 本节分享一下爬取知乎用户所有用户信息的 Scrapy 爬虫实战. 本节目标 本节要实现的内容有 ...

  8. 外键,check,索引等,根据ID来检索详细信息

    sql server OBJECTPROPERTY 函数 分类: Sql server2008-11-26 11:11 1562人阅读 评论(0) 收藏 举报 sql serverinsertdele ...

  9. 【全面解禁!真正的Expression Blend实战开发技巧】第七章 MVVM初体验-在DataGrid行末添加按钮

    原文:[全面解禁!真正的Expression Blend实战开发技巧]第七章 MVVM初体验-在DataGrid行末添加按钮 博客更新较慢,先向各位读者说声抱歉.这一节讲解的依然是开发中经常遇到的一种 ...

随机推荐

  1. 学渣乱搞系列之扩展KMP的那点事

    扩展KMP牵涉了一些相对运动的姿势,比较费解!本学渣看了一天的扩展KMP,打算写点东西...本文看后,出现的后果本人一概不负责.毕竟我不是很会表达. 扩展KMP是搞什么灰机的?本学渣所知道的扩展KMP ...

  2. bzoj 1500 [NOI 2005] 维修数列

    题目大意不多说了 貌似每个苦逼的acmer都要做一下这个splay树的模版题目吧 还是有很多操作的,估计够以后当模版了.... #include <cstdio> #include < ...

  3. [luoguP2962] [USACO09NOV]灯Lights(高斯消元 + dfs)

    传送门 先进行高斯消元 因为要求最少的开关次数,那么: 对于关键元,我们可以通过带入消元求出, 对于自由元,我们暴力枚举,进行dfs,因为只有开关两种状态,0或1 #include <cmath ...

  4. Genymotion 常见问题Unable to configure the network adapter for the virtual device解决

    Genymotion 常见问题Unable to configure the network adapter for the virtual device解决 参考:http://www.pczhis ...

  5. fedora安装后,yum命令不能使用,Cannot retrieve metalink for repository: fedora. Please verify its path and try again 解决方法

    fedora安装后,yum命令不能使用,Cannot retrieve metalink for repository: fedora. Please verify its path and try ...

  6. input文本框的value属性在页面中不随输入的数据而变化

    今天,在做试验遇到这么一个需求: 一个input文本框,输入值后将标签传到后台,在后台解析标签,发现value仍然是初值,不是我们改变后的值. 例如: <input name="&qu ...

  7. hdu - 5074 Hatsune Miku (简单dp)

    有m种不同的句子要组成一首n个句子的歌,每首歌都有一个美丽值,美丽值是由相邻的句子种类决定的,给出m*m的矩阵map[i][j]表示第i种句子和第j种句子的最大得分,一首歌的美丽值是由sum(map[ ...

  8. HDU——2768 Cat vs. Dog

    Cat vs. Dog Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tota ...

  9. Codeforces 938G(cdq分治+可撤销并查集+线性基)

    题意: 有一个无向连通图,支持三个操作: 1 x y d : 新建一条x和y的无向边,长度为d 2 x y    :删除x和y之间的无向边 3 x y    :询问x到y的所有路径中(可以绕环)最短的 ...

  10. 转:Linux中的内存管理

    前一段时间看了<深入理解Linux内核>对其中的内存管理部分花了不少时间,但是还是有很多问题不是很清楚,最近又花了一些时间复习了一下,在这里记录下自己的理解和对Linux中内存管理的一些看 ...