在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. 12.iscsi-target

    server: 环境:rhel7.2  软件包:targetcli-2.1.fb41-3.el7.noarch,selinux-policy-targeted-3.13.1-60.el7.noarch ...

  2. 取代file_get_contents 的一个采集函数

    function url_get_content($url=''){ $ch = curl_init(); $timeout = 100; $browser = 'Mozilla/5.0 (Windo ...

  3. Andriod docs加载速度慢的问题解决

    网上找了个类, import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import ja ...

  4. 【Qt】Qt Creator快捷键【转】

    简介 Qt Creator中提供了各种快捷键来加快开发进程. 如果需要查看或自定义快捷键,选择工具->选项->环境->键盘.快捷键按类别列出,可以在过滤器(Filter)处输入命令名 ...

  5. Rewrite规则简介

    Rewirte主要的功能就是实现URL的跳转,它的正则表达式是基于Perl语言.可基于服务器级的(httpd.conf)和目录级的(.htaccess)两种方式.如果要想用到rewrite模块,必须先 ...

  6. Oracle内存管理理论篇二

    目标 了解oracle内存管理方式 掌握ASMM管理方式 掌握AMM管理方式 监控内存使用 学习一个知识点时,最好先了解其历史.ORACLE近期的版本都对内存管理做了简化,从9i通过PGA_AGGRE ...

  7. 百度云盘demo

  8. 关于python的环境变量问题

    我的ubuntu安装python后,查看所有的环境变量,发现没有PYTHONPATH?对我使用python没太大影响,自己写的模块的路径问题有很多方法解决.但是现在我想将我写的模块放在一个包里,要用到 ...

  9. java的JVM机制

    1.jre:java运行环境 提供一个JVM和一些基础类库.2.只安装jre以后,机器就具备了运行java程序的条件.但是不具备开发java程序的条件.安装JDK以后,在c:/program file ...

  10. Linux下Hadoop的简单安装

    Hadoop 的安装极为简单,一共只有三步:   安装JDK 安装Hadoop 配置Hadoop     1,安装JDK       下载JDK,ftp传到linux或者linux中下载     切换 ...