Introduction
This article describes runtime table creation in WPF and shows some basic data operations, such as inserting and deleting records using C# and XAML. The DataGridView control is the most popular control for display data in tabular format in Windows Forms but in WPF we use a DataGrid to display data. 
DataGrid is a data shaping component that allows the end user to manage the data and also display the data on the screen. It provides a feature called AutoGenerateColumns that automatically generates columns.
In Visual Studio 2010 DataGrid supports Drag and Drop from a toolbox but in Visual Studio 2008 you need to install the WPF toolkit.
Step 1
First we create a WPF application using the following procedure:
- Start the Visual Studio.
- Select "New Project".
- Select the C# language and "WPF Application".
- Name the project as "Run time table creation"
- Click the "OK" button.
![n2.jpg]()
Step 2
Now start designing the window using the following procedure:
- Go to "View" -> "Toolbox".
- Drag and Drop the 4 text boxes, 4 labels, 3 buttons and 1 DataGird onto the window.
- Select the label and press F4.
- Then set the content of the labels as Id, Name, Email and City .
- Similarly set the content of the buttons as insert, delete and reset text box.
![n1.jpg]()
Step 3
After setting , the final source code of  the MainWindow.XAML is given below.
<Window x:Class="Runtime_table_creation.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="602" Width="525" Loaded="Window_Loaded" Background="Pink">
    <Grid Width="477">
        <Label Content="Id" Height="28" HorizontalAlignment="Left" Margin="34,50,0,0" Name="label1" VerticalAlignment="Top" />
        <Label Content="Name" Height="28" HorizontalAlignment="Left" Margin="34,107,0,0" Name="label2" VerticalAlignment="Top" />
        <Label Content="Email" Height="28" HorizontalAlignment="Left" Margin="34,161,0,0" Name="label3" VerticalAlignment="Top" />
        <Label Content="City" Height="32" HorizontalAlignment="Left" Margin="34,218,0,0" Name="label4" VerticalAlignment="Top" Width="42" />
        <TextBox Height="28" HorizontalAlignment="Left" Margin="126,50,0,0" Name="textBox1" VerticalAlignment="Top" Width="135" />
        <TextBox Height="28" HorizontalAlignment="Left" Margin="126,107,0,0" Name="textBox2" VerticalAlignment="Top" Width="135"/>
                
        <TextBox Height="27" HorizontalAlignment="Left" Margin="126,161,0,0" Name="textBox3" VerticalAlignment="Top" Width="140" />
        <Button Content="Insert data" Height="23" HorizontalAlignment="Left" Margin="63,301,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click" />
        <DataGrid AutoGenerateColumns="True" Height="192" HorizontalAlignment="Left" Margin="12,351,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="416" />
        
        <TextBox Height="32" HorizontalAlignment="Left" Margin="126,218,0,0" Name="textBox4" VerticalAlignment="Top" Width="140" />
        <Button Content="Clear textboxes" Height="23" HorizontalAlignment="Left" Margin="165,301,0,0" Name="button2" VerticalAlignment="Top" Width="110" Click="button2_Click" />
        <Button Content="Delete data" Height="23" HorizontalAlignment="Left" Margin="307,301,0,0" Name="button3" VerticalAlignment="Top" Width="98" Click="button3_Click" />
    </Grid>
</Window>
Step 4
- Go to the MainWindow.xmal.cs.
- Add "using System.Data" and "using System.Data.SqlClient" to the namespaces.
- The MainWindows.Xamls.cs code is given below.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
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;
using System.Data;
using System.Data.SqlClient;
namespace Runtime_table_creation
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
        DataTable dt;
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            dt = new DataTable("emp");
            DataColumn dc1 = new DataColumn("id", typeof(int));
            DataColumn dc2 = new DataColumn("name", typeof(string));
            DataColumn dc3 = new DataColumn("email", typeof(string));
            DataColumn dc4 = new DataColumn("city", typeof(string));
            dt.Columns.Add(dc1);
            dt.Columns.Add(dc2);
            dt.Columns.Add(dc3);
            dt.Columns.Add(dc4);
            dataGrid1.ItemsSource = dt.DefaultView;
        }
        DataRow dr;
        private void button1_Click(object sender, RoutedEventArgs e)
        {
            dr = dt.NewRow();
            dr[0] = int.Parse(textBox1.Text);
            dr[1] = textBox2.Text;
            dr[2] = textBox3.Text;
            dr[3] = textBox4.Text;
            dt.Rows.Add(dr);
            dataGrid1.ItemsSource = dt.DefaultView;
            textBox1.Focus();
            
        }
 
        private void button2_Click(object sender, RoutedEventArgs e)
        {
            textBox1.Clear();
            textBox2.Clear();
            textBox3.Clear();
            textBox4.Clear();
            
        }
 
        private void button3_Click(object sender, RoutedEventArgs e)
        {
           
            dataGrid1.ItemsSource= dt.DefaultView;
            dt.Rows.Remove(dr);
            textBox1.Focus();
           
        }
 
    }
}
Output 
To execute the application, press F5.
![b1.jpg]()
Insert the data into the table.
![imp.jpg]()
Delete the data by clicking on the delete button.
![122.jpg]()
Reset the text box on clicking the Reset Textboxes button. 
![s65.jpg]()