2016-08-10 13 views
2

DataTableからプログラムでWPF DataGridを埋め込む必要があります。列のリストは設計時にはわかりません。WPF DataGridのテンプレートと内容をプログラムで設定する方法はありますか?

列は、単一のラベルを持つ単純なテンプレートに基づいて手動で生成する必要があります(AutoGeneratingColumnイベント?)。 Label.Contentは列名です。今すぐバインド許可 - テンプレートは、XAMLで作成することができますが、他のすべてはC言語である必要があります

少し複雑なアプローチは行です。データセルテンプレートには単一のラベルまたはテキストボックスが必要ですが、セルテンプレートは実行時に設定する必要があります。例えば、文字列はセル内で5文字以上の長さで表現されなければならず、次にラベルベースのテンプレートが使用されるべきです。それ以外の場合は、TextBoxテンプレートを使用する必要があります。 この場合も、テンプレートはXAMLでのみ作成できます。充填データは、C#で

を実行する必要はここでデータを生成するためにで開始するいくつかのコードです:あなたはDataGridTextColumnを定義することで、プログラムでデータグリッドの列を追加し、その幅を設定することができ

DataTable myTable = new DataTable(tableName); 
myTable.Columns.Add(new DataColumn("id", typeof(int))); 
myTable.Columns.Add(new DataColumn("name", typeof(string))); 
myTable.Rows.Add(new object[] {1, "label"}); 
myTable.Rows.Add(new object[] {2, "text box"}); 

答えて

0

ヘッダーとバインディング。ここで

は、設計時には、No.of列を知らなくても、あなたがデータグリッド内の複数の列を定義することができますこの方法を使用してあなたのアイデア

DataGridTextColumn column1 = new DataGridTextColumn(); 
column1.Header = myTable.Columns[0].Caption; 
column1.Width = new DataGridLength(1, DataGridLengthUnitType.Star); 
column1.Binding = new Binding("column1_name"); 

DataGridTextColumn column1 = new DataGridTextColumn(); 
column1.Header = myTable.Columns[1].Caption; 
column1.Width = new DataGridLength(1, DataGridLengthUnitType.Star); 
column1.Binding = new Binding("column2_name"); 

dataGrid.Columns.Add(column1); 
dataGrid.Columns.Add(column2); 

を取得するには少しの例である

関連する問題