Siverlight DataGrid动态表头

1.XAML源代码

<UserControl x:Class="DgridHeaderBinding.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    d:DesignHeight="300" d:DesignWidth="400"
    xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data"
    xmlns:dataprimitives="clr-namespace:System.Windows.Controls.Primitives;assembly=System.Windows.Controls.Data"
    xmlns:sys="clr-namespace:System;assembly=mscorlib"
    xmlns:local="clr-namespace:DgridHeaderBinding" >
    <UserControl.Resources>
        <local:People x:Key="folks"/>
        <local:BindingConverter x:Key="BindCon"/>
        <Style x:Key="ColBinding" TargetType="dataprimitives:DataGridColumnHeader" >
            <Setter Property="ContentTemplate" >
                <Setter.Value>
                    <DataTemplate>
                        <ContentPresenter Content="{Binding Converter={StaticResource BindCon}}"  />
                    </DataTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </UserControl.Resources>
    <Grid x:Name="LayoutRoot" Background="White">
        <StackPanel>
            <TextBox Text="binding header" x:Name="tbox" />

            <data:DataGrid ItemsSource="{Binding AllPeople,Source={StaticResource folks}}" AutoGenerateColumns="False" ColumnHeaderStyle="{StaticResource ColBinding}"  >
                <data:DataGrid.Columns>
                    <data:DataGridTextColumn Binding="{Binding ID}"
                                             Header="{Binding Text, ElementName=tbox}" />
                    <data:DataGridTextColumn Binding="{Binding Name}" 

                                             Header="hello" />
                </data:DataGrid.Columns>
            </data:DataGrid>
        </StackPanel>

    </Grid>
</UserControl>

2.CS代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Controls;
using System.Windows.Data;
using System.Globalization;

namespace DgridHeaderBinding
{
    public partial class MainPage : UserControl
    {
        public MainPage()
        {
            InitializeComponent();
        }
    }

    public class Person
    {
        public int ID { get; set; }
        public string Name { get; set; }

    }

    public class People
    {
        public People()
        {
            AllPeople = (from a in Enumerable.Range(1, 100)
                         select
                         new Person { ID = a, Name = "Name: " + a }
                     ).ToList();

        }
        public List<Person> AllPeople { get; set; }
    }

    public class BindingConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if (value.GetType().Name == "Binding")
            {
                ContentControl cc = new ContentControl();
                cc.SetBinding(ContentControl.ContentProperty, value as Binding);
                return cc;
            }
            else return value;
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {

            return null;
        }
    }

}

效果图

源代码:http://download.csdn.net/detail/mh942408056/8730943

时间: 2024-10-12 17:04:54

Siverlight DataGrid动态表头的相关文章

转载 -- jquery easyui datagrid 动态表头 + 嵌套对象属性展示

代码功能: 1.datagrid 的表头由后台生成,可以配置在数据库 2.datagrid 的列绑定数据 支撑嵌套对象 $(function() { var columns = new Array(); var cols = new Array(); var colData = new Object(); $.post("url","params",function(data){ //动态生成表头开始 if(data.xxxx != null){ $.each(da

easyui datagrid 动态表头2

前端 function goqry() { $("#form").form("submit", { url: "CJCK_bjcjfx_yfsl.aspx?opt=qry", onSubmit: function () { if ($(this).form('validate')) { $('#tt').datagrid("loading"); return true; } else { return false; } },

ASP.NET Aries DataGrid 配置表头说明文档

DataGrid 配置表头 字段 中文 说明 Field 字段 注意:mg_ 开头的字段为层级表头 Title 列称 OrderNum 序号 显示的顺序(冻结和非冻结列是两个组的序号) Width 列宽 设置的宽度(在自适应屏幕时最后的字段无效) dg.options.fitColumns属性决定(默认true) Align 对齐 下拉值:左对齐.居中.右对齐 Frozen 冻结 冻结列在左边(一组).非冻结列在右边(又一组). Edit 编辑 开启行内编辑时,可编辑的列 Sortable 排序

再谈extjs4.1中gridpanel动态表头动态列

之前写过一篇gridpanel有关动态列的博客,当时只是实验性的写写,实际项目中也没有用,因为是实验性的写,所以对实际项目考虑的问题不是很多,比如,如果是动态列,数据也是动态的,而且可能不固定,这些具体的问题,只有在实际开发后,才会明白,这次正好顺利开发完gridpanel的动态列,总结一下过程,为遇到同样问题的同学提供一个思路. 因为是实际开发项目,具体的代码比较多,这里只简单说说重点的一些代码,其实这些代码明白后,其他的功能都很好弄.顺便说一下,我后台数据库相关操作用的是c#. 既然是动态列

easyui datagrid 动态加入、移除editor

使用easyui 行编辑的时候完毕编辑的功能比較简单,可是假设要依据一个框的值动态改变别的值或者编辑的时候禁用某个框的时候就比較麻烦了. 比方像以下这样:加入行的时候每一个值都是手动输入,改动的时候第一个值不能改动.我们来看下怎么实现这种效果. easyui本身是不提供这么细节的功能的.须要我们自己拓展下: 在编辑的时候移除第一列的editor属性,加入的时候,加入第一列的属性. //扩展datagrid:动态加入删除editor $.extend($.fn.datagrid.methods,

WPF datagrid 动态增加列

DataGrid动态增加列 <Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="

jquery easyui datagrid动态改变title的值

title:'<input type="text" id="txtTitle1" style="background:none;border:none;"/>', onLoadSuccess:function(data) { $("#txtTitle1").val("所有教师 人数:"+$("#IndeterminateMembers").datagrid("get

【沫沫金】miniui表格DataGrid动态Combobox功能实现

背景 业务需要,树形表格每行可选一个下拉列,下拉数据依据行ID 效果 如上图,每一行的批次列下拉框依据产品代号展示. 疑难 怎么让下拉根据行代号获取数据?想到两种解决方案:1.初始化加载datagrid实现 2.点击的时候动态改变下拉combobox请求地址实现 方案1尝试了重绘单元格时动态设置请求地址,html代码是完成了,但是也上识别不出mini对象,根本弹不出:失败尝试数据field内容设置为combobox内容,内容过去了,页面没下拉功能:失败 方案2点击时设置,事件好监控,问题是没有独

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

原文:WPF Datagrid 动态生成列 并绑定数据 说的是这里 因为列头是动态加载的 (后台for循环 一会能看到代码) 数据来源于左侧列 左侧列数据源 当然num1 属于临时的dome使用  可以用ObservableCollection集合代表 动态创建属性 WPF 动态生成对象属性 (dynamic) ObservableCollection<NameList> listName = new ObservableCollection<NameList>(); privat