WPF的dataGrid基本用法

Posted xuelixue

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF的dataGrid基本用法相关的知识,希望对你有一定的参考价值。

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 WpfApp1
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        ObservableCollection<ExpandoObject> items = new ObservableCollection<ExpandoObject>();

        public MainWindow()
        {
            InitializeComponent();
            InitData();
        }
        /// <summary>
        /// 初始化
        /// </summary>
        public void InitData()
        {
            for (int i = 0; i < 5; i++)
            {
                
                dynamic item = new ExpandoObject();
                item.Aa = "Property A value - " + i.ToString();
                item.Bb = "Property B value - " + i.ToString();
                items.Add(item);
            }
            
            dataGrid.Columns.Add(new DataGridTextColumn() { Header = "Aa", Binding = new Binding("Aa") });
            dataGrid.Columns.Add(new DataGridTextColumn() { Header = "Bb", Binding = new Binding("Bb") });
            dataGrid.ItemsSource = items;
        }
        /// <summary>
        /// 增加行
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void AddData_Click(object sender, RoutedEventArgs e)
        {
            dynamic item = new ExpandoObject();
            item.Aa = "New Item - A";
            item.Bb = "New Item - B";
            items.Add(item);
        }

        int newColumnIndex = 1;
        /// <summary>
        /// 增加列
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        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++;
        }

        private void showWindow_Click(object sender, RoutedEventArgs e)
        {
            Window1 window1 = new Window1();
            window1.Show();
        }
        /// <summary>
        /// 清除数据表
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ClearDataGrid_Click(object sender, RoutedEventArgs e)
        {
            //dataGrid.Items.Clear();
            //dataGrid.ItemsSource = null;
            //dataGrid.Items.Refresh();
            //dataGrid.Items.Clear();
            dataGrid.ItemsSource = null;
            dataGrid.Items.Refresh();
            dataGrid.Columns.Clear();
            //
            
        }

        private void InitData_Click(object sender, RoutedEventArgs e)
        {
            items.Clear();
            InitData();
        }
        //private void Test()
        //{
        //    ThreadPool.QueueUserWorkItem();

        //    Delegate void WaitCallback(object state);
        //}
    }
}

 xaml

<Window x:Class="WpfApp1.MainWindow"
        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"
        xmlns:local="clr-namespace:WpfApp1"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <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"/>
            <Button Content="Show Window" Click="showWindow_Click" Margin="5"></Button>
            <Button Content="清除内容" Click="ClearDataGrid_Click" Margin="5"></Button>
            <Button Content="初始化"   Click="InitData_Click" Margin="5"></Button>
        </StackPanel>
        <DataGrid x:Name="dataGrid" AutoGenerateColumns="True" Grid.Row="1"/>
    </Grid>
</Window>

 

以上是关于WPF的dataGrid基本用法的主要内容,如果未能解决你的问题,请参考以下文章

wpf怎样使用DataGrid控件

WPF的DataGrid用法-小白向

WPF的DataGrid用法-小白向

在 WPF 中访问 DataGrid 的 ScrollView 属性

C# WPF GridControl用法举例

wpf datagrid cell 设置焦点