私はこれでナットを運転しています。AutoGenerateColumnsがfalseの場合、DataGridはDataGridに正しくバインドされません。
私はDataGrid
を持っています。インメモリにバインドしたいDataTable
です。 AutoGenerateColumnsをtrueに設定すると、フィールドを編集して変更をデータテーブルに伝播させることができ、すべてが素晴らしいです。問題は、「ステータス」フィールドのドロップダウンコンボボックスを使用したかったことです。 AutoGenerateColumns
をfalse
に設定し、XAMLで列見出しを手動で追加しました。私がこれを行うと、もはやフィールドを編集することができなくなり、変更を持続させることができます。代わりに、各フィールドは空白になります。私はデバッグ中にDatagridカラムのステータスをチェックし、バインディングがnullとして読み取っていることがわかりました。私が間違っていたことのアイデア?
XAMLコード:
<DataGrid Margin="31,29,0,29" Name="dgTickets" RowEditEnding="dgTickets_RowEditEnding" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="ID #" x:Name="ID" />
<DataGridTextColumn Header="Customer Name" x:Name="CustomerName" />
<DataGridTextColumn Header="Phone #" x:Name="Phone"/>
<DataGridComboBoxColumn Header="Status" x:Name="Status"/>
<DataGridCheckBoxColumn Header="Bool?" x:Name="bool1"/>
<DataGridCheckBoxColumn Header="Bool?" x:Name="bool2"/>
<DataGridCheckBoxColumn Header="Bool?" x:Name="bool3"/>
<DataGridTextColumn Header="Notes" x:Name="Notes"/>
</DataGrid.Columns>
</DataGrid>
のDataTableを作成し、それを関連付けるための私のC#コード:
//add columns
column = new DataColumn("ID", System.Type.GetType("System.String")); //two piece constructor - adds header string and data type
dbTable.Columns.Add(column); //adds the column to the table
column = new DataColumn("CustomerName", System.Type.GetType("System.String"));
dbTable.Columns.Add(column);
column = new DataColumn("Phone#", System.Type.GetType("System.String"));
dbTable.Columns.Add(column);
column = new DataColumn("Status", System.Type.GetType("System.String"));
dbTable.Columns.Add(column);
column = new DataColumn("bool1", System.Type.GetType("System.Boolean"));
dbTable.Columns.Add(column);
column = new DataColumn("bool2", System.Type.GetType("System.Boolean"));
dbTable.Columns.Add(column);
column = new DataColumn("bool3", System.Type.GetType("System.Boolean"));
dbTable.Columns.Add(column);
column = new DataColumn("Notes", System.Type.GetType("System.String"));
dbTable.Columns.Add(column);
//add rows
row = dbTable.NewRow();
dbTable.Rows.Add(row);
dbTable.AcceptChanges();
dgTickets.ItemsSource = dbTable.DefaultView;
何かアドバイスが高く評価されています。私はこれらの2つの要素を連携させるためにいくつかの異なる方法を試しましたが、ヘッダーを手動で定義すると2つのバインドを正しく行うことができません。
。私は間違いなく、その本を拾う必要があります。ありがとうございました! – ChargerIIC