とりあえず、DataGridではなく、独自で一覧を作成する方向で作り続けてみようと思う。
チャートの部分と同様にGridコントロールに独自クラスをバインドする形式にして、DataTemplateSelecterでDataTemplateを切り替えることでテキストボックスや行部分を表示している。
Thumbコントロールを使ってリサイズも可能なようにしておいて、セルのマージができないのを補ってみた。
工夫したところとしては処理速度を補うために、バインド用のリストとテキストボックス用のリストと行を表現するためのリストを分けた。
<ソース抜粋(GanntGridViewModel.cs)>
// 左部のタスク一覧を表現するためのセルを格納する各リスト
this.GanttGridTaskViewPartsRowCells = new ObservableCollection<GanttCell>();
this.GanttGridTaskViewPartsTaskCells = new ObservableCollection<GanttCell>();
this.GanttGridTaskViewCells = new ObservableCollection<GanttCell>();
GanttGridTaskViewPartsRowCellsとGanttGridTaskViewPartsTaskCellsにGanntCellクラスをインスタンス化してそれぞれに追加したのちに、this.GanttGridTaskViewCellsに両方のリストの内容をAddしてバインディングに利用する。
そうすることでタスクだけを変更したい時にはGanttGridTaskViewCellsをループするのではなく、GanttGridTaskViewPartsTaskCellsをループすることで対応できる。
問題としては、タスクを追加したときにリストへの追加ミスがないようにしないといけないところと、その際に他の問題が起きないか、というところ・・・。
これは試してみないとわからないので、次回やってみようと思う。
<DownLoad>
0 件のコメント:
コメントを投稿