久しぶりにWeb開発を始めた。
今回は、Silverlight で DataVisualization クラスを使った開発だ。
早い話が、グラフを描こうということだね。
開発ツールは、Visual Studio 2010(.NET 4)+Silverlight toolkitで行った。
これが結構大変だった。
なんせ、
初めてのSilverlight開発。
ドキュメントが足りない。
サンプルアプリにソースコードが付いていない。
Blend4がないとできないことがある。
・・・
などなどなど
というわけで、急きょExpression Blend4を追加した。
Silverlight は.NET Web Serviceと通信できる。
ただし、非同期通信に限られる。
開発の順番としては、
1) .NET Web Serviceで表示するデータを提供するサービスを作る。
2) Silverlight のプロジェクトで.NET Web ServiceをService Referencesに追加。
3) 開発する。
といった順番になる。
グラフの作りこみはXAMLで行うのだが、
まず、Chartコントロールを置いて、Seriesを変更することで円グラフなど、グラフの種類を選択する。
いきなり円グラフを置いても機能しない。
グラフの再描画はChartコントロールから階層をを指定して再描画させる必要がある。
C#なら
(Chart1.Series[0] as ColumnSeries).Refresh();
などと書くわけだ。
そのほかにもいろいろなことがあり、大変苦労した。
そのうち、ホームページにコンテンツとして掲載しようと思っている。
掲載予定の内容は、
・Chartの描き方(基本)
・Chartで要素の数が可変の場合のプログラム。
・Chartで色を変えたい場合のXAMLコード。
・Chartで凡例を消す方法。
・ChartとTabコントロールとGrid(Tableの代わり)の組み合わせ方。
など
楽しみな人、情報がほしい人は、Nice!コメントをください。
Nice!が多ければ、早めに対応するかもしれません。
個別の質問もOKですが、体調によっては時間がかかりますので悪しからず。
では(^^)/
スポンサーサイト
- 2010/09/01(水) 12:33:14|
- 未分類
-
| トラックバック:0
-
| コメント:4
(Chart1.Series[0] as ColumnSeries).Refresh();
でも再描画できません。
ColumnSeries の完全名を教えていただけますでしょうか?
オブジェクトブラウザで検索してもでてきませんでした。
- 2011/02/04(金) 18:05:06 |
- URL |
- さとる #-
- [ 編集 ]
さとる さん
コメントありがとうございます。
> (Chart1.Series[0] as ColumnSeries).Refresh();
> でも再描画できません。
> ColumnSeries の完全名を教えていただけますでしょうか?
> オブジェクトブラウザで検索してもでてきませんでした。
実は、チャートの種類によって若干リフレッシュの方法が異なります。
チャートの種類を示していただければ、やり方を示せると思います。
一番面倒なのは、StackedColumnSeriesなどで、これは、明示的にRefreshを禁止しています。
そのため、更新の方法がほかと全く異なります。
具体的には、引き渡す構造体の値が変わったことを明示的に通知するのですが、
構造体にそのようなメソッドがあるわけもなく、
仕方がないので、一度”Null”を引き渡してから表示したい構造体を引き渡せば
簡単にRefreshの代わりになります。
教科書的な美しい方法ではないかもしれませんが、私にはこの方法しか見つけられませんでした。
参考になれば幸いです。
うまくいかない場合は、もう一度コメントください。
来週の月曜日以降になりますが、サンプルソースを提供できるかもしれません。
その際は、どのSeriesか明記してください。
よろしくお願いします。
- 2011/02/04(金) 19:00:48 |
- URL |
- くわぽん #-
- [ 編集 ]
すみません。
ColumnSeriesって書いてありましたね。
細かい用語が間違っていたらごめんなさい。
大昔のプログラマなので、用語の使い方がいい加減なもので(^^;
ColumnSeriesであれば、XAMLで定義したChartControl名からの階層で指定する方法でRefreshできるはずです。
1.Silverlightの画面上にChartControlを配置してChartControl名を宣言します。
2.ChartControl内のSeriesを変更するか、削除追加してColumnSeriesを追加します。
(このとき、オブジェクトブラウザからドラッグアンドドロップで持ってきてはいけません。)
3.とりあえず、グラフのデータを渡してみてください。
4.(ChartControl名.Series[0] as ColumnSeries).Refresh();
で更新されるはずです。
月曜日中に、サンプルコードを掲載します。
- 2011/02/04(金) 19:24:36 |
- URL |
- くわぽん #-
- [ 編集 ]
コメントだと、スパムと判定されてしまうので、エントリーを起こしました。
ブログエントリーを見てください。
アドレスは以下の通りです。
http://kuwapon.blog60.fc2.com/blog-entry-1090.html
を見てください。
- 2011/02/07(月) 22:21:05 |
- URL |
- くわぽん #-
- [ 編集 ]