WPF DataGrid的创建,前台代码构建,后台代码构建

原创 2014年01月06日 18:12:02

1 前台代码

<Window x:Class="DataGridTemplate.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="925" Loaded="Window_Loaded">
    <Window.Resources>

    </Window.Resources>
    <Grid Margin="0,0,-8,0">
        <DataGrid x:Name="myGrid" AutoGenerateColumns="False"   HorizontalAlignment="Left" Margin="0,37,0,0" VerticalAlignment="Top" Width="760" Height="122">
            <DataGrid.Columns >
                <DataGridTextColumn Header="编号" Width=" 80"  Binding="{Binding id,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged }"></DataGridTextColumn>
                <DataGridTextColumn Header=" 姓名" Width=" 80" Binding="{Binding name,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"></DataGridTextColumn>
                <DataGridTextColumn Header=" 年龄" Width=" 80" Binding="{Binding age,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"></DataGridTextColumn>
                <DataGridTemplateColumn Header=" 姓名" Width="80" >
                    <DataGridTemplateColumn.CellTemplate >
                        <DataTemplate>
                            <StackPanel    >
                                <TextBlock  Text="{Binding name}" Background="Yellow"  ></TextBlock>
                                <TextBlock Text="{Binding age}" Background="YellowGreen"      ></TextBlock>
                            </StackPanel>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                    <DataGridTemplateColumn.CellEditingTemplate >
                        <DataTemplate>
                            <ComboBox  x:Name="cboName"  ItemsSource ="{Binding name}">
                            </ComboBox>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellEditingTemplate>

                </DataGridTemplateColumn>

            </DataGrid.Columns>
        </DataGrid>

    </Grid>
</Window>

2 引用到的类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DataGridTemplate
{
    class ClsPerson
    {
        public string id
        {
            get;
            set;
        }
        public string name
        {
            get;
            set;
        }
        public int age
        {
            get;
            set;
        }
    }
}

3  后台代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace DataGridTemplate
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            List<ClsPerson >  list=new List<ClsPerson> ();
            ClsPerson  p1=new ClsPerson ();
            ClsPerson  p2=new ClsPerson ();
            p1.id = "1";
            p1.name = "harden";
            p1.age = 18;
            p2.id = "2";
            p2.name = "jimmy";
            p2.age = 20;
            list.Add(p1);
            list.Add(p2);
            myGrid.ItemsSource = list;
            //*********************************************************
            DataGridTextColumn objColumn = new DataGridTextColumn();
            objColumn.Header = "后台创建年龄列";
            objColumn.Width = 80;
            objColumn.Binding = new Binding("age");
            myGrid.Columns.Add(objColumn);
            //*******************************************************************************
            DataGridTemplateColumn objTemColumn = new DataGridTemplateColumn();
            DataTemplate objTem = new DataTemplate();
            StackPanel objStackPanel = new StackPanel();
            TextBlock objTextBlock = new TextBlock();

            FrameworkElementFactory spFactory = new FrameworkElementFactory(typeof(StackPanel));
            spFactory.Name = "myComboFactory";
            spFactory.SetValue(StackPanel.OrientationProperty, Orientation .Vertical );
            
           
            FrameworkElementFactory myTextBlock = new FrameworkElementFactory(typeof(TextBlock));
            myTextBlock.SetBinding(TextBlock.TextProperty, new Binding("age"));
            spFactory.AppendChild(myTextBlock);

            FrameworkElementFactory myTextBlock2 = new FrameworkElementFactory(typeof(TextBlock));
            myTextBlock2.SetBinding(TextBlock.TextProperty, new Binding("name"));
            spFactory.AppendChild(myTextBlock2);
            objTem.VisualTree = spFactory;

            objTemColumn.CellTemplate = objTem;
            objTemColumn.Header = "后台创建姓名模板列";
            objTemColumn.Width = 80;
            myGrid.Columns.Add(objTemColumn);
        }

    }
}


相关文章推荐

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

WPF DataGrid 绑定数据及时更新的处理

默认情况下datagrid 绑定数据源后,在界面编辑某一列后,数据不会及时更新到内存对象中。如在同一行上有一个命令对来获取 当前选中行(内存对象)发现,数据未更新过来。解决办法:在列的绑定属性里加上U...

winform中动态添加控件和事件

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy...

WPF 中动态创建和删除控件

动态创建控件 1.容器控件.RegisterName("Name",要注册的控件)   //注册控件 2.容器控件.FindName("Name") as  控件类型           ...

WPF MVVM开发模式下,有关textbox,combobox,dataGrid的前台页面代码

  • czf2505
  • czf2505
  • 2014年05月16日 16:46
  • 769

贵美商城前台后台所有代码

  • 2015年09月12日 10:24
  • 7MB
  • 下载

后台注册前台脚本代码

  • 2012年02月17日 14:01
  • 2KB
  • 下载

asp.net WebForm 前台获取后台c#代码信息

Jquery Ajax调用aspx页面方法 在asp.net webform开发中,用jQuery ajax传值一般有几种玩法 1)普通玩法:通过一般处理程序ashx进行处理; 2)高级玩法...
  • lybwwp
  • lybwwp
  • 2015年01月07日 22:28
  • 5663
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WPF DataGrid的创建,前台代码构建,后台代码构建
举报原因:
原因补充:

(最多只允许输入30个字)