動作環境
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; }
}
}