LoginSignup
0
2

More than 5 years have passed since last update.

Visual Studio / WPF > DataGrid > XAMLで列を追加して、CSでデータを追加する

Last updated at Posted at 2017-04-21
動作環境
Windows 7 Pro (32bit)
Microsoft Visual Studio 2017 Community
Sublime Text 2

Visual Studio / WPF > DataGrid > 列を追加して、データを追加する
にてDataGridに項目を追加した。

列の設定はXAMLで行っておきたい。

XAMLでは、DataGrid上で「列の追加」> 「DataGridTextColumnの追加」で列を1つ増やせる。その際のXAMLは以下のようになる。

XAML
           <DataGrid.Columns>
                <DataGridTextColumn/>
            </DataGrid.Columns>

これだけだと列の名前やデータバインディングの指定がないため、以下のように書き換えてみた。

XAML
           <DataGrid.Columns>
                <DataGridTextColumn Header="Column1" Binding="{Binding Column1}"/>
            </DataGrid.Columns>

参考: http://stackoverflow.com/questions/12230866/datagrid-column-xaml

CSファイルは以下のように1つ目の列作成はスキップして、実行してみた。

MainWindow.xaml.cs
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 _170421_WpfApp1
{
    /// <summary>
    /// MainWindow.xaml の相互作用ロジック
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void Window_ContentRendered(object sender, EventArgs e)
        {
            var dg = dataGridView1;
            for (int idx = 0; idx < 4; idx++)
            {
                if (idx == 0)
                {
                    continue;
                }
                var column = new DataGridTextColumn();
                column.Header = "Column" + (idx + 1);
                column.Binding = new Binding("Column" + (idx + 1));
                dg.Columns.Add(column);
                //
            }
            dg.Items.Add(new DataItem { Column1 = "a.1", Column2 = "a.2", Column3 = "a.3", Column4 = "a.4" });
            dg.Items.Add(new DataItem { Column1 = "b.1", Column2 = "b.2", Column3 = "b.3", Column4 = "b.4" });
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {

        }
    }

    public class DataItem
    {
        public string Column1 { get; set; }
        public string Column2 { get; set; }
        public string Column3 { get; set; }
        public string Column4 { get; set; }
    }
}

work.png

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2