C1FlexGridとC1DataGridの違い


 ComponentOne Studio 2011JSilverlightコンポーネントWPFコンポーネントには、それぞれ同様にC1FlexGridとC1DataGridという2つのデータグリッドコンポーネントが存在しています。

コントロール Silverlight WPF
C1FlexGrid FlexGrid for Silverlight FlexGrid for WPF
C1DataGrid DataGrid for Silverlight DataGrid for WPF



 なお、FlexGridは、それぞれFlexGrid for Silverlight 1.0JFlexGrid for WPF 1.0Jとして、単体製品も存在しています。


 1つの製品になぜ2つもデータグリッドを収録する必要があるのかと思われるかもしれませんが、これら2つのデータグリッドには明確なコンセプトの違いがあります。


 それは、C1FlexGridがWindowsフォームのデータグリッド(DataGridViewやWindowsフォーム版のFlexGrid)を強く意識した作りとなっているのに対して、C1DataGridはSilverlightWPFの(標準)DataGridを強く意識した作りとなっているということです。


 このようなコンセプトの違いは、見た目からも実感することができます。





 C1FlexGridをすべてデフォルトの設定で実行した場合、行の高さはWindowsフォームのDataGridViewのデフォルト状態と同じ22ピクセル(上下の罫線含む)となります。上の図ではまったく同じ位置に同一データが並んでいることを確認できます。


 また、セルの選択はセル単位となっており、選択時に背景色が変わるのはWindowsフォームのDataGridViewと同じ単一セルであることが分かります。





 C1DataGridをすべてデフォルトの設定で実行した場合、行の高さは25ピクセルとなりSilverlight標準のDataGridのデフォルトである24ピクセルよりも1ピクセルほど高さが高くなっています。しかしながら、C1DataGridにはRowHeightプロパティというプロパティが用意されており、このプロパティを"24px"と設定するだけでSilverlight標準のDataGridと同じ行の高さとなります。





 また、セルの選択はセル単位であっても行全体の背景色が変わるるようになっており、これはSilverlight標準のDataGridと同様の見た目であることが分かるかと思います。


 ここまでは、見た目の部分についてだけ特徴を述べてきましたが、もちろん機能面においてもそれぞれのコンセプトの違いを実感することができます。


 たとえば、C1FlexGridではWindowsフォーム版のFlexGridではおなじみの行と列を指定して直接値を設定するアンバウンドがサポートされていますが、C1DataGridではサポートされていません。逆に、C1DataGridでは、Silverlight標準のDataGridに存在する行の詳細表示(RowDetailsTemplateプロパティ)をサポートしていますが、C1FlexGridではサポートしていません。


 また、C1FlexGridはではコントロールテンプレートによる外観のカスタマイズをあえてサポートせず、Windowsフォームと同様にすべての外観をプロパティとして設定するようになっています。このようにコンセプトを明確にしたうえで必要な機能のみを実装しているため、C1FlexGrid(Silverlight版)のアセンブリサイズはバージョン1.0Jの時点では、162KBと非常に軽量となっています。