Muitas
vezes precisamos alimentar um DataGrid dinamicamente, com o WPF está tarefa
ficou bem fácil, vamos ao exemplo.
                Iremos
criar um programa para exibir o alfabeto em maiúsculo , um contador e o código
ASCII da letra dentro de um DataGrid assim que o usuário pressionar o botão.
                Vamos
inserir um botão e um DataGrid, como o intuito aqui é alimentar dinamicamente o
DataGrid, vamos alterar a propriedade AutoGenerateColumns  para true dentro do XAML , assim o DataGrid
vai gerar as colunas para nós, abaixo segue como o código deve ficar :
<my:datagrid autogeneratecolumns="true" margin="12,42,12,20" name="dataGrid1" xmlns:my="clr-namespace:Microsoft.Windows.Controls;assembly=WPFToolkit"> </my:datagrid>
    
                No
código vamos criar uma simples classe apenas com os atributos, segue o código:
    public class LetraNumero
    {
        public int Posicao { get; set; }
        public char Letra { get; set; }
        public int ASCII { get; set; }
    }
                Segue o
código do evento Click do botão :
         private void button1_Click(object sender, RoutedEventArgs e)
        {   
            // Cria lista para os objetos (está lista tem que ser do tipo Generic)
            List<letranumero> lista = new List<letranumero>();
            // Rotina para alimentar a lista
            for (int i = 1; i < 27; i++)
            {
                LetraNumero item = new LetraNumero();
                item.Posicao = i;
                item.Letra = Convert.ToChar(64 + i);
                item.ASCII = 64 + i;
                lista.Add(item);
            }
             // Vinculando a lista ao grid
             dataGrid1.ItemsSource = lista; 
        }
                A
propriedade ItemsSource do DataGrid aceita uma lista do tipo Generic e como a
propriedade AutoGenerateColumns está como true, ele vai criar uma coluna para
cada atributo da classe definida na lista. Abaixo segue o exemplo da tela em
execução:
                Se for
preciso, podemos alterar o titulo da coluna (pois ele sempre deixa a coluna com
o nome da propriedade da classe) ou mesmo ocultar a coluna. Criei um outro
botão com o mesmo código e inserir essas duas linhas, uma para renomear a
coluna Posicao para Posição e a outra para ocultar a coluna ASCII:
             // Altera o titulo da coluna 0
            dataGrid1.Columns[0].Header = "Posição";           
            // Deixa a coluna 2 invisivel
            dataGrid1.Columns[2].Visibility = Visibility.Hidden;
                Executando
o botão, verifique como ficou a tela:
 Referências:
 


 
