none
DataGridの列の非表示について RRS feed

  • 質問

  • C#のWPFアプリ開発でDataGridを利用しているのですが、列の非表示ができません。

    コードは以下のようにしています。
    PriceMasterDBDataSet dataSet = new PriceMasterDBDataSet();
    dataSet.単価.大分類コードColumn.ColumnMapping = MappingType.Hidden;     // 非表示
    DataContext = dataSet.単価;
    dataGrid.SetBinding(DataGrid.ItemsSourceProperty, new Binding("."));

    説明
    PriceMasterDBDataSet・・・データソースから自動生成したクラス

    どうすれば非表示にできるでしょうか?

    2009年10月20日 6:16

回答

  • ご存じかもしれませんが、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月21日 1:54
    モデレータ

すべての返信

  • ご存じかもしれませんが、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月21日 1:54
    モデレータ
  • Visibilityは知りませんでした。
    Visibilityを使うことで列の非表示ができました。

    WPFは初めてなので戸惑うことばかりです。

    回答ありがとうございました。
    2009年10月21日 4:31
  • こんにちは、フォーラムオペレーターの高橋春樹です。

    trapemiyaさん、いつもお世話になっております。

    hsyutoさん、初めまして。
    MSDNフォーラムのご利用ありがとうございます。

    問題が解決してよかったです(^-^)
    今回trapemiyaさんからの投稿が有用な情報であったと思いましたので、
    勝手ながら、回答マークを付けさせてもらいました。

    今後ともMSDNフォーラムをよろしくお願いします。


    マイクロソフト株式会社 フォーラム オペレーター 高橋春樹
    2009年10月28日 4:39