現在行っているSilverlightでの開発でとあるサードパーティを使っているのですが、そこに含まれているDataGridが無駄に高機能なのにかゆいところに手の届かないいやらしいものなのです。
何が届かないかって?それはカラムをDrag&DropでReorderしたときにDragCompleteイベントが無いこと。System.Windowsに含まれているDataGridには含まれているのですが、さすがサードパーティ製というかこういうところ用意しておこうよ的な感じがします。
さてどうしたものかと、要件としてはDrag&DropでReorderした時の表示順保存が必要なのですがどのタイミングでそれを行えばいいか結構悩みました。
表示順の復元はLoadイベントで行えばいいとして、保存タイミングをどうするかなと。デストラクタで行うとメモリからリアルに破棄されるタイミングがガベコレ任せだから保障が取れないし、最悪ボタンを配置して押下時に保存なんてことも考えました。
そんな時、職場の人のインスピレーションで取り掛かったのが添付プロパティ。詳細は下記を参照。
http://msdn.microsoft.com/ja-jp/library/ms749011(VS.80).aspx
んで取りあえず実装を試みたのですが、これが本当すばらしい。
何がすばらしいかというとXamlにプロパティとして記述するだけで後は勝手に添付プロパティ内のロジックが処理してくれるということ。
うまくすればビハインドコードに何も仕込まなくても機能を追加できます。さらには一元管理が出来るので各コントロールが配置されているページでロジックを書く必要も無い。
ScrollViewerのマウスホイールでのスクロールとかも添付プロパティに書いてしまえばXamlにはプロパティを宣言すればいいだけ。
これを知ってるだけで結構出来る幅が広がるので知っとくと得です。
コメント