トップ回答者
DataGridの列の非表示について

質問
-
C#のWPFアプリ開発でDataGridを利用しているのですが、列の非表示ができません。
コードは以下のようにしています。
PriceMasterDBDataSet dataSet = new PriceMasterDBDataSet();
dataSet.単価.大分類コードColumn.ColumnMapping = MappingType.Hidden; // 非表示
DataContext = dataSet.単価;
dataGrid.SetBinding(DataGrid.ItemsSourceProperty, new Binding("."));
説明
PriceMasterDBDataSet・・・データソースから自動生成したクラス
どうすれば非表示にできるでしょうか?
回答
-
ご存じかもしれませんが、ColumnMappingにこだわらなければ以下のようにして非表示にできます。
dataGrid.Columns[1].Visibility = Visibility.Hidden
ColumnMappingは元々はDataSetのデータをXML形式で書き出す際に、どのような形式で書き出すかを指定するために使います。
たまたまWindows FormのDataGridは、ColumnMappingがMappingType.Hiddenに設定された列を表示しないように実装されていましたが、WPFのDataGridはそうなっていないということなのだと思います。WPFのDataGridは柔軟であり、1列ににデータテーブルの複数列を表示することも簡単にできてしまいます。つまり、データテーブルの列とWPFのDataGridの列は必ずしも1対1に対応しません。
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/- 回答としてマーク 高橋 春樹 2009年10月28日 4:39
すべての返信
-
ご存じかもしれませんが、ColumnMappingにこだわらなければ以下のようにして非表示にできます。
dataGrid.Columns[1].Visibility = Visibility.Hidden
ColumnMappingは元々はDataSetのデータをXML形式で書き出す際に、どのような形式で書き出すかを指定するために使います。
たまたまWindows FormのDataGridは、ColumnMappingがMappingType.Hiddenに設定された列を表示しないように実装されていましたが、WPFのDataGridはそうなっていないということなのだと思います。WPFのDataGridは柔軟であり、1列ににデータテーブルの複数列を表示することも簡単にできてしまいます。つまり、データテーブルの列とWPFのDataGridの列は必ずしも1対1に対応しません。
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/- 回答としてマーク 高橋 春樹 2009年10月28日 4:39