在Silverlight中的DataGrid控件使用中我们想点击其中一行并且看这一行的详细信息应该如何做呢?而且这个详细信息是多行的数据,而非简单的几个属性。 在这里我们使用DataGrid.RowDetailsTemplate来设置或者获取行详细信息。首先我们准备一个DataGrid命名为A,设置其RowDetailsVisibilityMode=VisibleWhenSelected (行详细信

  

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

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

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

<Grid x:Name="LayoutRoot" Background="White">
        <!--这里是第一个DataGrid,其DataGrid.RowDetailsTemplate模板会绑定另外一个DataGrid以显示其详细信息-->
        <sdk:DataGrid x:Name="gridEmployee" CanUserReorderColumns="False" CanUserSortColumns="False" 
                        RowDetailsVisibilityMode="VisibleWhenSelected" 
                        HorizontalAlignment="Center" ScrollViewer.VerticalScrollBarVisibility="Auto" 
                        Height="200"  AutoGenerateColumns="False" Width="422" VerticalAlignment="Center">
        <sdk:DataGrid.Columns>
            <sdk:DataGridTextColumn Width="150" 
                                        Header="用户名" 
                                        Binding="{Binding UserName}"/>
            <sdk:DataGridTextColumn Width="150" 
                                        Header="用户密码" 
                                        Binding="{Binding UserPwd}"/>
        </sdk:DataGrid.Columns>
        <sdk:DataGrid.RowDetailsTemplate>
            <DataTemplate>
                <!--这里是第二个DataGrid显示详细信息-->
                <sdk:DataGrid  AutoGenerateColumns="False" ItemsSource="{Binding UserDetailInfomation}"
                                HeadersVisibility="None">
                    <sdk:DataGrid.Columns>
                        <sdk:DataGridTextColumn Width="100" 
                                        Header="地址" 
                                        Binding="{Binding UserAddress}"/>
                        <sdk:DataGridTextColumn Width="100" 
                                        Header="城市" 
                                        Binding="{Binding UserCity}"/>
                        <sdk:DataGridTextColumn Width="100" 
                                        Header="国籍" 
                                        Binding="{Binding UserCountry}"/>
                        <sdk:DataGridTextColumn Width="100" 
                                        Header="类型" 
                                        Binding="{Binding UserState}"/>
                    </sdk:DataGrid.Columns>
                </sdk:DataGrid>
            </DataTemplate>
        </sdk:DataGrid.RowDetailsTemplate>
    </sdk:DataGrid>
</Grid>

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

   public partial class MainPage : UserControl
    {
        public MainPage()
        {
            InitializeComponent();
            this.gridEmployee.ItemsSource = new UserInfo().GetEmployeeData();
        }
    }
    /// <summary>
    /// 用户信息
    /// </summary>
    public class UserInfo
    {
        public string UserName { get; set; }
        public string UserPwd { get; set; }
        /// <summary>
        /// 用户详细信息
        /// </summary>
        public List<UserDetailInfo> UserDetailInfomation{get;set;}
        public UserInfo()
        { }
        /// <summary>
        /// 获取用户信息的实例
        /// </summary>
        /// <returns></returns>
        public List<UserInfo> GetEmployeeData()
        {
            List<UserInfo> employees = new List<UserInfo>();
            employees.Add
                (
                new UserInfo
                {
                    UserName = "李伟",
                    UserPwd = "1333821",
                    UserDetailInfomation = new List<UserDetailInfo>() 
                    { 
                        new UserDetailInfo()
                        { 
                                UserAddress="四川省成都市",
                                UserCity="成都",
                                UserCountry="中国",
                                UserState="当前所在地"
                        },
                            new UserDetailInfo()
                        { 
                                UserAddress="四川省内江市",
                                UserCity="内江",
                                UserCountry="中国",
                                UserState="出生地"
                        }
                    }
                });
            employees.Add
                (
                new UserInfo
                {
                    UserName = "Json",
                    UserPwd = "json282",
                    UserDetailInfomation = new List<UserDetailInfo>() 
                    { 
                        new UserDetailInfo()
                        { 
                                UserAddress="广东省广州市",
                                UserCity="广州",
                                UserCountry="中国",
                                UserState="当前所在地"
                        },
                            new UserDetailInfo()
                        { 
                                UserAddress="广东省茂名市",
                                UserCity="茂名",
                                UserCountry="中国",
                                UserState="出生地"
                        }
                    }
                });
            employees.Add
                (
                new UserInfo
                {
                    UserName = "刘敏",
                    UserPwd = "motorola",
                    UserDetailInfomation = new List<UserDetailInfo>() 
                    { 
                        new UserDetailInfo()
                        { 
                                UserAddress="湖南省长沙市",
                                UserCity="长沙",
                                UserCountry="中国",
                                UserState="当前所在地"
                        },
                            new UserDetailInfo()
                        { 
                                UserAddress="湖南省长沙市",
                                UserCity="长沙",
                                UserCountry="中国",
                                UserState="出生地"
                        }
                    }
                });
            return employees;
        }
    }
    /// <summary>
    /// 用户详细信息的实体
    /// </summary>
    public class UserDetailInfo
    {
        public string UserAddress { get; set; }
        public string UserCity { get; set; }
        public string UserState { get; set; }
        public string UserCountry { get; set; }
}

  最后我们来看看它的运行效果,如果需要源码请点击SLDataGridRowDetail.zip下载。

  

  

本文来自程兴亮的博客,原文地址:http://www.cnblogs.com/chengxingliang/archive/2011/07/22/2112895.html

DataGrid行详细信息的绑定--DataGrid.RowDetailsTe(转载)的更多相关文章

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

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

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

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

  5. WPF设置DataGrid行内容高度自适应 与 TextBox/TextBlock内容高度自适应

    WPF设置DataGrid行内容高度自适应  TextBox/TextBlock内容高度自适应  参考: DataGrid 控件中的调整大小选项: http://msdn.microsoft.com/ ...

  6. WPF Datagrid 动态生成列 并绑定数据

    原文:WPF Datagrid 动态生成列 并绑定数据 说的是这里 因为列头是动态加载的 (后台for循环 一会能看到代码) 数据来源于左侧列 左侧列数据源 当然num1 属于临时的dome使用  可 ...

  7. Easyui datagrid行内【添加】、【编辑】、【上移】、【下移】

    前几天项目中遇到一个需求用到了Easyui datagrd行内添加和编辑数据,同时对行内数据上移下移,所以对这几个功能做个总结. 1.首先大概说下这几个功能里用到的主要方法,行内添加数据主要是添加列的 ...

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

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

  9. WPF DataGrid某列使用多绑定后该列排序失效,列上加入 SortMemberPath 设置即可.

    WPF DataGrid某列使用多绑定后该列排序失效 2011-07-14 10:59hdongq | 浏览 1031 次  悬赏:20 在wpf的datagrid中某一列使用了多绑定,但是该列排序失 ...

随机推荐

  1. Fedora 19 vim c语言开发环境

    1. Fedora 19 居然没有自带 gcc 和 g++: sudo yum -y install gcc gcc-c++ 2. 安装 vim 和 cvim 插件: sudo yum -y vim ...

  2. Jquery Slick幻灯片插件

    slick 是一个基于 jQuery 的幻灯片插件,具有以下特点: 支持响应式 浏览器支持 CSS3 时,则使用 CSS3 过度/动画 支持移动设备滑动 支持桌面浏览器鼠标拖动 支持循环 支持左右控制 ...

  3. js实现雪花飘落效果的代码

    使用js实现雪花飘落的效果,用html5绘布加js写的雪花飘效果 . 代码: <html> <head> <script> /** * js与html5实现的雪花飘 ...

  4. Vim一些实用的用法

    打开多个文件: 1.vim还没有启动的时候:在终端里输入 vim file1 file2 ... filen便可以打开所有想要打开的文件2.vim已经启动输入:open file可以再打开一个文件,并 ...

  5. 使用微软分布式缓存服务Velocity(Windows Server AppFabric Caching Service)

    概述 Velocity是微软推出的分布式缓存解决方案,为开发可扩展性,可用的,高性能的应用程提供支持,可以缓存各种类型的数据,如CLR对象. XML.二进制数据等,并且支持集群模式的缓存服务器.Vel ...

  6. ASP.NET中的常用快捷键

    想查找ASP.NET中的属性快捷键,忘记了,搜了一下,找到了ASP.NET中的常用快捷键. 大神文章:http://www.cnblogs.com/xiacao/archive/2012/06/12/ ...

  7. Python学习第五天

    复习内容: · 迭代器&生成器 · 装饰器 · Json & pickle 数据序列化 · 软件目录结构规范yi 一.生成器 1.   列表生成式: 2.   生成器的定义:在Pyth ...

  8. Microsoft Press Free eBook

    微软的免费的电子书, 都是Microsoft Press 出版的 有以下价格方面 Windows Server(大体上都是Windows Server 2012 ) Microsoft Azure(好 ...

  9. Mac OS X 10.10.2 Yosemite jdk 环境变量配置

    我的Mac系统版本是OS X 10.10.2 Yosemite,为了用Eclipse做android开发,安装了jdk 1.7, 但是如果想使用IntelliJ IDE做android开发的话,就需要 ...

  10. 数据分析≠Hadoop+NoSQL,不妨先看完善现有技术的10条捷径(分享)

            Hadoop让大数据分析走向了大众化,然而它的部署仍需耗费大量的人力和物力.在直奔Hadoop之前,是否已经将现有技术推向极限?这里总结了对Hadoop投资前可以尝试的10个替代方案, ...