Quantcast
Channel: わんくま同盟
Viewing all articles
Browse latest Browse all 994

[VisualStudio]Visual Studio 2013 RCのBlendにはBehaviorが

$
0
0

XAMLといえば、WPF、Silverlight、Windows Phone、WindowsストアアプリなどのプロジェクトでViewを定義する優れものマークアップ言語ですが、なぜか、WindowsストアアプリのXAMLではBehaviorがありませんでした。

Behaviorがないと何が困るかといえば、

  • XAML上のオブジェクトをクリックしたタイミングでStoryBoardを呼び出したい
  • オブジェクトの操作をコードを書かないで実行したい

のようなことができないからです。

「あれ?それって普通できないから、コードビハインド側(xaml.vbとかxaml.csとか)に記述しますよね?」

と思われるかもしれませんが、Behaviorはこの常識を打ち破ってしまう仕組みで、WPF時代にすでに実装(SilverlightはSilverlight3からなので玲ちゃんのときから)されている既存テクノロジーなのです。

知らなければ特に不満はないのですが、知っていてBehaviorを使っていた人にとっては、XAMLなのにBehaviorがないのはWindowsストアアプリのViewを作る上で非常にフラストレーションがたまるものであり、また、View分離前提でチーム開発するうえでの足かせになっていたのです。

それが、Blend for Visual Studio 2013 RCでWindows 8.1ストアアプリのプロジェクトを作成したときにサポートされるようになりました。

 

ただし、あくまでも現状はWindows 8.1用のWindowsストアアプリプロジェクトが対象のようで、Windows 8 用Windowsストアアプリプロジェクトの場合の[アセット]-[ビヘイビアー]表示は次のようになっており「download additional behaviors」とはなっていますが、クリックしても追加ビヘイビアーはありません。

image

 

今回サポートされたBehaviorは次の10個です。

image

  • CallMethodAction : 指定したオブジェクトのメソッドを呼び出す
  • ChangePropertyAction : 指定したオブジェクトのプロパティを変更する
  • ControlStoryboardAction : 指定したStoryboardの動きを制御する
  • DataTriggerBehavior : Binding値が条件に一致したときにActionを実行するトリガー
  • EventTriggerBehavior : イベントが発生したときにActionを実行するトリガー
  • GoToStateAction : 指定したオブジェクトのViewStateに書かれたStoryBoradを起動する
  • IncrementalUpdateBehavior : 
  • InvokeCommandAction : 指定したオブジェクトのイベントに対してICommandなオブジェクトをBindingする
  • NavigateToPageAction : ページ間の移動を定義する
  • PlaySoundAction : 指定したサウンドを再生する

 

それでは簡単にビヘイビアーの使い方を見てみましょう。

[アセット]-[ビヘイビアー]-[CallMethodAction]をドラッグして画面上のCommandにドロップします。

image

この操作だけでButtonコントロールにEventTriggerBehaviorが追加され、更にそこで起動されるActionとしてCallMethodActionが追加されます。

image

 

CallMethodActionのプロパティでMediaElementのPlayメソッドを割り当てましょう。

image


    
        
        
    
    
        
            
        
    
    
        
        

ここまでで実行して「再生」ボタンをクリックすると動画が始まります。

ここまででxaml.vbもxaml.csも登場しません。

XAMLの世界だけで完結しています。「再生」ボタンをクリックしたときにView側だけで完結するのであれば、ViewModelにICommandを実装してメソッドを実行したり、Bindingしたり、コードビハインドを使ってViewModelのメソッドを実行する必要はありません。


Viewing all articles
Browse latest Browse all 994

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>