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);
        }

    }
}


WPF-DataGrid后台动态生成列

DataGrid后台动态生成列 Now that you know the basics of the Silverlight DataGrid and how to specify...
  • yqj234
  • yqj234
  • 2016年03月14日 15:49
  • 5103

wpf 分别用 xaml 和后台代码实现 色彩渐变

xaml 方法:
  • a771948524
  • a771948524
  • 2013年07月14日 09:49
  • 1806

wpf后台代码数据绑定

using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; usin...
  • h82258652
  • h82258652
  • 2014年03月05日 23:09
  • 9274

WPF 后台C#设置控件背景图片

 以前的程序中有做过,当时只是记得uri很长一大段就没怎么记。今天有人问了也就写下来。   这是一个Button,设置了Background后的效果。 前台的设置比较方便 XAML:...
  • huyu107
  • huyu107
  • 2015年04月22日 10:53
  • 10843

wpf中后台代码更改字体或者背景颜色

备忘!有一次写代码要改背景颜色
  • danghuibin123
  • danghuibin123
  • 2014年09月09日 11:24
  • 4511

通过代码创建DataTemplate

有的时候在XAML里面创建一个通用的DataTemplate比较麻烦,例如在DataTemplate里面有一个控件需要绑定到不同的属性里面,例如下面的代码:                    ...
  • Donjuan
  • Donjuan
  • 2009年02月08日 19:11
  • 3913

wpf动态创建DataGrid

public DataGrid CreateDataGrid() { //自定义DataGrid DataGrid dataGrid = null; dataGrid = new DataGr...
  • swarb
  • swarb
  • 2013年03月01日 17:44
  • 4405

WPF前后台资源相互调用的方法

xaml调用resx里的资源xmlns:resx="clr-namespace:ApplicationName.Properties" Title="{x:Static resx:Resources....
  • delyex
  • delyex
  • 2015年06月11日 15:12
  • 1134

WPF中给datagrid控件中dataTable添加新行,并选中设为当前行(源码加注释)

WPF中给datagrid控件中dataTable添加新行,并选中设为当前行(源码加注释)
  • hj2011124071
  • hj2011124071
  • 2016年01月16日 13:55
  • 2970

wpf 分别用前台和后台 两种方法 绘制矩形 填充

xaml:
  • a771948524
  • a771948524
  • 2013年07月14日 10:06
  • 2543
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WPF DataGrid的创建,前台代码构建,后台代码构建
举报原因:
原因补充:

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