タスクの削除を付けたが、チャートの削除をまだつけていないことに気づいた。
っていうかそれ以前にデータの保存処理を付けてないし、初期の日付範囲とかも一切つけていない。
プロジェクトの初期設定として、プロジェクトの開始日・終了日を変更できるようにすることから始めるべきかな・・・。
頑張ったところとしては、左側のタスクの一番左側のタスクの縦幅を広げて、大きいグループの範囲を広げた時に、濃い線をタスクの一覧とガントチャートの一覧に表示して、どこまでがグループに属しているかをわかりやすくしたことと、マウスで複数のチャートを選択・移動できるようにした。
グループを表現する線についてはGanttGridTemplateSelecter.csとGanttGridTaskViewTemplateSelecter.csにパターンを追加して、DataTemplateを新しく定義してこちゃこちゃすればできるけど、マウスでの移動については一苦労した。
CanvasコントロールをGridコントロールの下に張り付けて、Rectを新たに描画している。
Canvasコントロールを追加したことでスクロールバーがうまく出なくなってしまったので、SizeChangeイベントで変更するようにした。
マウスの範囲選択でGridコントロール上のチャートを選択するのもネットで調べてみるといろいろとサンプルがある。
世の中にはすごい人がいるなぁ。
<ソース>
#region 右側のCanvasのサイズを合わせる
// マウスで複数選択をさせるためにCanvasコントロールを利用しているがCanvasコントロールはScrollBarが出しずらい
// ガントチャートの上にCanvasをTransportで重ねることも考えたが、チャートをクリックできなくなってしまう。
// Canvasコントロールをクリックしたときの通知などをチャート側に伝えるようにすればよいが、さすがに手間なので
// Canvasコントロールのサイズを変更しScrollBarが出るようにした。
/// <summary>
/// 幅を合わせる
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void gridCalender_SizeChanged(object sender, SizeChangedEventArgs e)
{
Grid grid = (Grid)sender;
CalenderBaseCanvas.Width = e.NewSize.Width;
}
/// <summary>
/// 高さはタスク一覧側と同じになるので合わせる
/// gridCalender側と合わせるとタスクが少ないときにスクロールバーが上に出てしまう
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void icTaskGrid_SizeChanged(object sender, SizeChangedEventArgs e)
{
CalenderBaseCanvas.Height = icTaskGrid.ActualHeight;
}
#endregion
<DownLoad>