折れ線グラフと違って,
棒グラフの場合は横軸に何が来るのかわからないので,
何が来ても表示できるように対応しました.
ItemsControl と同じように ItemTemplate を指定することで
統一された表示形式で横軸アイテムを並べられるようにしています.
いや~苦労した.
グラフの棒とか目盛線とかは
折れ線グラフコントロールと同様に,
OnRender を override して,
DrawingRectangle やら DrawingLine やらの嵐.
折れ線グラフほどデータ量が多くはないので
描画速度は全然気にならないかな.
むしろサンプルで表示させようとした横軸ラベルの画像の表示に時間がかかっていたり….
ItemTemplate の適用方法がまずかったのかなぁとも思いつつ,
こんなコントロール多用はしないだろうということで放置.
折れ線グラフコントロールとほぼ共通ですが,
グラフメニューも用意してあります.
右クリックするとよく使うメニューがショートカットメニューとして表示されます.
カメラマークは表示中のグラフを .bmp で保存するボタン.
Configuration ボタンを押すとさらに詳細設定画面が開く仕様となっています.
カスタムコントロールの内部構造のお話ですが.
折れ線グラフコントロールがウィンドウを持ってて,
そのウィンドウに対する ViewModel があったりとかした時代もありました.
複雑怪奇でメンテナンスする気も全然起きなかったので,
思い切って内部構造を改良したはいいものの,
今までとはまったく互換が無いものに仕上がってしまったりなど,
グラフコントロールの内部構造は紆余曲折ありましたが,
なんとか他のコントロールとほぼ同じような内部構造となり,
メンテナンスもしやすいようになりました.