作ってみましたとも(参)。

作ってみましたのその参。セル結合。セルマージとも言う。欲しくて色々探してもなかったので、ほぼオリジナル。
20121215_1
「苗字」列がそれっぽく見える筈。
レシピ
・DataGrid:1つ
・添付プロパティ:6つ(内部用1つ)
・マージ用ヘルパクラス:1つ

主な添付プロパティ:
・セル結合を行うかどうかを設定するプロパティ
 DataGridに設定します。
・セル結合対象にするかどうかを設定するプロパティ。
 DataGridColumnに設定します。

ポイント
 ・DataGridで表示される罫線は、DataGridCellやDataGridRowのBorderではない。これを消すために、DataGridのGridLinesVisibilityプロパティをNoneに設定する必要があります。
 ・デフォルトの罫線を消したら、DataGridCellのBorder設定でそれらしく見せます。
  このせいで通常の描画より重くなるリスクがあります。
 ・セルの結合と言いながら、本当にセルを結合する事は無理です(WPF4では、行単位のコンテナを持つ為)。同じ内容のセルが上にいた時に限り、文字色を透明にしているだけの処理となります。
 ・UI仮想化設定は必須。でないと使い物にならないと思われます。
 ・マージ的な処理は、ほぼすべてヘルパクラスが行います。
 ・処理のタイミングは、ItemContainerGeneratorのStatusChangedイベント発生となります。
  (多重的な処理(処理中にさらに処理が開始される)がないようにする必要があります。
 ・なお、列方向へのマージは、未実装です。ていうか、無理。

追加として、マージされた側の文字色を変更できるようにしました(苗字列)。
20121215_2
セルのマージって、見た目が良くはなるけど、マージされたセルが続くと、逆に見づらい事がある為。というか、うちの同僚くんの好みだったりするけど。
スポンサーサイト
当サイトは基本をすっ飛ばしてます。基本文法等は、@ITをどうぞ
カテゴリー: WPF4 | コメント: 0 | トラックバック: 0


この記事へのコメント

コメントの投稿

非公開コメント


サイドバー背後固定表示サンプル

当ブログに書かれたソースコードは流用自由です。

バグ、スペルミス等はありうる事です。

ご利用の際は自己責任でお願いしますm(_ _)m