码迷,mamicode.com
首页 > Windows程序 > 详细

WPF datagrid 动态增加列

时间:2015-07-31 12:44:13      阅读:361      评论:0      收藏:0      [点我收藏+]

标签:

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="350" Width="525">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <StackPanel Orientation="Horizontal">
            <Button Content="Add Column" Click="AddColumn_Click" Margin="5"/>
            <Button Content="Add Data" Click="AddData_Click" Margin="5"/>
        </StackPanel>
        <DataGrid x:Name="dataGrid" AutoGenerateColumns="True" Grid.Row="1"/>
    </Grid>
</Window>
技术分享

 

技术分享
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Dynamic;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;

namespace WpfApplication1
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        ObservableCollection<ExpandoObject> items = new ObservableCollection<ExpandoObject>();
        public MainWindow()
        {
            InitializeComponent();
            for (int i = 0; i < 5; i++)
            {
                dynamic item = new ExpandoObject();
                item.A = "Property A value - " + i.ToString();
                item.B = "Property B value - " + i.ToString();
                items.Add(item);
            }

            dataGrid.Columns.Add(new DataGridTextColumn() { Header = "A", Binding = new Binding("A") });
            dataGrid.Columns.Add(new DataGridTextColumn() { Header = "B", Binding = new Binding("B") });
            dataGrid.ItemsSource = items;
        }

        private void AddData_Click(object sender, RoutedEventArgs e)
        {
            dynamic item = new ExpandoObject();
            item.A = "New Item - A";
            item.B = "New Item - B";
            items.Add(item);
        }

        int newColumnIndex = 1;
        private void AddColumn_Click(object sender, RoutedEventArgs e)
        {
            foreach (IDictionary<String, Object> item in items)
            {
                item.Add("NewColumn" + newColumnIndex, "New Column Value - " + newColumnIndex.ToString());
            }

            dataGrid.Columns.Add(new DataGridTextColumn() { Header = "New Column" + newColumnIndex, Binding = new Binding("NewColumn" + newColumnIndex) });

            newColumnIndex++;
        }
    }
}
技术分享

 https://social.microsoft.com/Forums/zh-CN/69ac1292-9512-4bd3-b691-795f64cb0aa0/wpf-datagrid-?forum=wpfzhchs

WPF datagrid 动态增加列

标签:

原文地址:http://www.cnblogs.com/lsgsanxiao/p/4691773.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!