プレゼンテーションロジックをカプセル化したり巷で流行のMVVMとかでも大活躍のBehaviorですが、当然のように使われてたりしますが、実はVisual Studioの場合はデザイナのサポートが無いため手でXAMLをしこしこ書かないといけません。
個人的にはBlendを使える環境にあるのですが、皆が皆Blendを使える環境にあるとは思えません。
マイクロソフトが正式に対応してくれれば、それにこしたことはないのですが、それまでの間に合わせとしてVisual StudioのデザイナでBehaviorを使えるように試行錯誤してみました。
注意事項
- 試行錯誤含めて3時間程度で作ったのでバグがある可能性があります
- 使う場合は自己責任でお願いします
- .NET Framework 4のWPFでしか試していません
- まだBehaviorにしか対応していません
- TriggerやActionは今後追加していこうと考えています
- Window直下にBehaviorを設定できません
- LayoutRootに設定することでごまかしてください・・・
- 1つでもWindowにBehaviorが追加された状態にXAMLで編集すれば、2つ目からは追加できます
上記の注意事項・制限事項があることを認識して守れる方は以下からダウンロードして使ってみて感想をください。
使い方
- 解凍してできたフォルダを任意の場所に起きます。
- Expression Blend 4のSDKが入ってない人は入れてください
- Visual Studio 2010でWPFアプリケーションのプロジェクトを作成してください
- 解凍したフォルダ内にあるOkazuki.BehaviorSupport.dllを参照に追加してください
- Designフォルダとかも必要なので動かさないでください
- 以下のアセンブリを参照に追加してください
- System.Windows.Interactivity
- Microsoft.Expression.Interactions
ここまでの手順でソリューションエクスプローラは以下のようになっているはずです。
- Visual Studioのデザイナで適当なコントロールを選択した状態で右クリックをして[Add Behavior...]を選択してください。以下のようなダイアログが出てきます。(参照に追加されてる中からBehaviorを探してきてます)
- OKをクリックすると、コントロールに選択したBehaviorが追加されます。
<Window x:Class="BehaviorSample.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525" xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"> <Grid> <!-- これが追加された! --> <i:Interaction.Behaviors> <ei:FluidMoveBehavior /> </i:Interaction.Behaviors> </Grid> </Window>
- Behavior自体のプロパティはタグを選択した状態で、Visual Studioのプロパティエディタでしてください。
今後の予定
- TriggerやActionに対応(優先度:高)
- Okazuki.BehaviorSupport.dllを参照に追加しなくてもいいように出来たらいいな…(優先度:低)