Neutral Scent

App developments & Gadgets

BehaviorServiceってなんだ?

SDKサンプルのPhotoStoreDemoのソースをつらつらと見ていたら、ListBox項目をふわふわ動かすのにAdornerオブジェクトというのを使ってる。あれータイムラインじゃないの??という感じ。
しかも、これが、.NET 2.0からある動作サービス(BehaviorService)とゆーやつの一部らしい。

Windows フォームのプログラミング - 動作サービスの概要
http://msdn2.microsoft.com/ja-jp/library/ms171826.aspx
BehaviorService はデザイナのユーザー インターフェイスを管理します。これにより、マウス関連のイベント、メニュー コマンド、OLE ドラッグ アンド ドロップ操作など、デザイン時のユーザー インターフェイス要素の操作が統一されます。
デザイナの開発者は、adorners という名前の独自のユーザー インターフェイス レイヤを作成します。各レイヤでは、描画、ドラッグなどの UI 操作用に、独自の Glyph 型を作成します。各 Glyph には、関連付けられている Behavior 型があります。Behavior は、メニュー コマンド、マウスの動作、OLE ドラッグ アンド ドロップ操作など、すべてのユーザー入力のオーバーロードを持つクラスです。また、Behavior オブジェクトを Glyph オブジェクトとは別に追加して、デザイナ全体の一般的なユーザー入力にフックできます。上記の 3 つの機能はいずれも、Behavior 型で実装されます。

ほーほー。.NETにこんな割り込み型の仕組みがあったとは、という感じ。XAML的にはもっとスマートなやり方がありそうなのであまり突っ込みませんが...。
それにしても、WPFのサンプルを見ていると、意外にコード側でハードコードされてるモノが多い。もっとFlashっぽい作りかと思っていたけど、そういうものなのか? ツールがないからたまたまそうなっているのか...?
あと、PhotoStoreDemoとかはVSよりEIDで見たほうがちゃんと見れる。リソースの中のスタイルとかはResources Viewで見れるようだ。元の要素の編集に戻るときはTimeline Viewの左上にある[Return Scope To Root]ボタンを押す。