SlideShare a Scribd company logo
1 of 23
それではビヘイビアでも
使ってみましょうか
       森 博之(もり ひろゆき)
        RIAアーキテクチャ研究会
          極東IT-Engineers代表
  Microsoft MVP – Development Platform
               Silverlight
自己紹介
• 森 博之(もり ひろゆき)
 – 極東IT-Engineers代表
   • http://www.kit-eng.com
 – Blog
   • もり ひろゆきの日々是勉強
      – http://moriblog.kit-eng.com
   • Twitter
Agenda
• ビヘイビアって?

• ビヘイビアの種類について
 – トリガー
 – アクション
 – ビヘイビアー
Behavior [名]
• (人の)行動(様式[パターン])、態度、
  挙動、振る舞い、言動、素行、そぶり、
  行状、非どころの行い
• (機械・ソフトウェアなどの)動き、動
  き具合、動作、調子、反応、作用
• (物体・物質などの)性質
• (薬などの)作用、反応
• (生物の)行動、修正
ビヘイビア(Behavior)
• Expression Blend SDKの機能
  – Silverlight SDKや.NET Frameworkにない機能
  – WPFのTriggerの代替に考えられた実装パター
    ン
  →現在は本家のWPFに逆輸入
  – 添付プロパティのメカニズムを利用して
    Interactionクラスで実現されている機能
• Expression Blend 3にはじめて搭載され
  る
  – Silverlight3と同時リリース
WPFのTriggerって?
• FrameworkElement・Style・ControlTemplate・
  DataTemplateなどの挙動を監視し、Setterや
  Actionを実行する
  – 監視する挙動(TriggerBaseの派生クラス)
    • プロパティの変化(Trigger, MultiTrigger)
    • データの変化(DataTrigger, MultiDataTrigger)
    • 発生するイベント(EventTrigger)
  – Setterクラス
    • プロパティ設定
  – 実行するアクション(TriggerActionクラスの派生ク
    ラス)
    • BeginStoryboardActionなどのストーリーボード操作
    • SoundPlayなどの音声ファイルの再生
添付プロパティって?
 • XAMLの機能のひとつ
 • オブジェクト間の通信をサポートする機
       能
 • static readonly DependencyProperty TargetProperty =
public 添付プロパティの多くは依存関係プロパ
        DependencyProperty.RegisterAttached(
       ティ “Target”, typeof(string), typeof(SampleClass),
                new FrameworkPropertyMetadata(string.Empty,));

public static void SetTarget(UIElement attachedElement, string value)
{
}

public static string GetTarget(UIElement attachedElement)
{
}
コードで添付プロパティを指定
する
• XAMLおよびC#で表現
<Canvas>
  <Button Canvas.Top=“100” />
</Canvas>


var c = new Canvas();
var b = new Button();
c.Children.Add(b);
Canvas.SetTop(b, 100);
添付プロパティでTriggerっ
て?
• Expression Blend SDKのIteractionクラ
  ス
• 以下のメンバーに注目
  – GetBehaviorsメソッド
  – GetTriggersメソッド
GetTriggersメソッド
• 添付プロパティ
• TriggerCollection型の戻り値を持つメ
  ソッド
  – Interactionクラスで管理されている
    Collectionオブジェクト→コレクション構文
• TriggerCollectionクラス
  – TriggerBaseオブジェクトのコレクション
TriggerBaseクラスって?
• インタラクショントリガーの抽象クラス
• ~Triggerと名前の付くクラスは
  TriggerBaseを継承している

• つまり、Iteraction.Triggersは複数の
  TriggerBaseの派生クラスを指定し保持す
  ることができる添付プロパティ
TriggerBaseクラスの機能
• 主要メンバー
 – フィールド
   • protected object AssociatedObject;
      – 添付されたオブジェクトが格納されている
 – プロパティ
   • public TriggerActionCollection Actions;
      – TriggerActionのコレクション
 – メソッド
   • protected void OnAttached();
      – 添付時
   • protected void OnDetaching();
      – 添付解除時
   • protected void InvokeActions();
      – Actionsに指定されたオブジェクトのActionメソッドを呼び出し
代表的なトリガー
• EventTrigger
  – 指定オブジェクトのイベントを監視
• DataTrigger
  – データの変化を監視
• PropertyChangedTrigger
  – プロパティの変化を監視
• KeyTrigger
  – キー入力を監視
TriggerActionは・・・
• 主要メンバー
 – プロパティ
   • protected object AssociatedObject;
 – メソッド
   • Protected abstract void Invoke(object
     parameter);
• 挙動
 – AssociatedObjectに対してActionを実行でき
   る
 – 異なる対象にActionを実行する場合は
   TargetedTriggerAction利用する
となるとビヘイビアーって?
• 添付プロパティ
• つまりGetBehaviorメソッド
  – Trigger同様、Itractionクラスで管理されて
    いるコレクションを返すメソッド
• BehaviorCollection
  – Behaviorオブジェクトのコレクション
Behavior?
• その他名前のとおり、添付されたオブ
  ジェクトもしくは指定のあったオブジェ
  クトに対しての振る舞いを追加したりカ
  スタムすることができるオブジェクト
• Triggerのようにきっかけの指定は必要な
  い
→ただし、Triggerのようにふるまわせるこ
とも可能
まとめ
• ビヘイビアとは
 – 添付プロパティを利用して振る舞いや簡単な
   処理を実行するメカニズム
 – Expression Blend SDKのみの機能
  • Expression Blend SDK単体のダウンロードも可能
 – 応用するといろんなことができますよ♪
Microsoft Innovation Academy
• マイクロソフト大手町テクノロジーセンターで実施
 – Visual Studio 2010ではじめるWPFプログラミング入門
   • 基礎編          12/8
   • 応用編          12/9
 – 開発者のためのSIlverlight4プログラミング
   • 前編
   • 中編
   • 後編
 – Windows Phone プログラミング入門
   • UI基礎編        12/6
   • Phone機能編     12/7
 – 開発者のためのWindows Azure
   • 入門
   • 実践編
それではBehaviorでも使ってみましょうか。

More Related Content

Similar to それではBehaviorでも使ってみましょうか。

20110714 j queryベーシック
20110714 j queryベーシック20110714 j queryベーシック
20110714 j queryベーシック
良太 増子
 
Streaming API で実現する クラウド ⇔ イントラ連携
Streaming API で実現する クラウド ⇔ イントラ連携Streaming API で実現する クラウド ⇔ イントラ連携
Streaming API で実現する クラウド ⇔ イントラ連携
Shinichi Tomita
 
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ ver1.1
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ ver1.124時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ ver1.1
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ ver1.1
聡 中川
 
僕がやったXaml戦略
僕がやったXaml戦略僕がやったXaml戦略
僕がやったXaml戦略
Hiroyuki Mori
 
Cakephpstudy5 hacks jp
Cakephpstudy5 hacks jpCakephpstudy5 hacks jp
Cakephpstudy5 hacks jp
Hiroki Shimizu
 
120331 silverlight5新機能早めぐり
120331 silverlight5新機能早めぐり120331 silverlight5新機能早めぐり
120331 silverlight5新機能早めぐり
Takayoshi Tanaka
 
Pro aspnetmvc3framework chap15
Pro aspnetmvc3framework chap15Pro aspnetmvc3framework chap15
Pro aspnetmvc3framework chap15
Hideki Hashizume
 

Similar to それではBehaviorでも使ってみましょうか。 (20)

5分程度で分かる? Appceleratorの方のAlloy
5分程度で分かる? Appceleratorの方のAlloy5分程度で分かる? Appceleratorの方のAlloy
5分程度で分かる? Appceleratorの方のAlloy
 
20110714 j queryベーシック
20110714 j queryベーシック20110714 j queryベーシック
20110714 j queryベーシック
 
scala+liftで遊ぼう
scala+liftで遊ぼうscala+liftで遊ぼう
scala+liftで遊ぼう
 
20150131_jQueryのようにWebテストが書けるGeb Navigator APIの紹介
20150131_jQueryのようにWebテストが書けるGeb Navigator APIの紹介20150131_jQueryのようにWebテストが書けるGeb Navigator APIの紹介
20150131_jQueryのようにWebテストが書けるGeb Navigator APIの紹介
 
Streaming API で実現する クラウド ⇔ イントラ連携
Streaming API で実現する クラウド ⇔ イントラ連携Streaming API で実現する クラウド ⇔ イントラ連携
Streaming API で実現する クラウド ⇔ イントラ連携
 
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ ver1.1
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ ver1.124時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ ver1.1
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ ver1.1
 
[DL Hacks]Visdomを使ったデータ可視化
[DL Hacks]Visdomを使ったデータ可視化[DL Hacks]Visdomを使ったデータ可視化
[DL Hacks]Visdomを使ったデータ可視化
 
僕がやったXaml戦略
僕がやったXaml戦略僕がやったXaml戦略
僕がやったXaml戦略
 
Django Rest Frameworkでお手軽にREST APIを作る
Django Rest Frameworkでお手軽にREST APIを作るDjango Rest Frameworkでお手軽にREST APIを作る
Django Rest Frameworkでお手軽にREST APIを作る
 
Cakephpstudy5 hacks jp
Cakephpstudy5 hacks jpCakephpstudy5 hacks jp
Cakephpstudy5 hacks jp
 
jQuery超入門編
jQuery超入門編jQuery超入門編
jQuery超入門編
 
⑯jQueryをおぼえよう!その2
⑯jQueryをおぼえよう!その2⑯jQueryをおぼえよう!その2
⑯jQueryをおぼえよう!その2
 
JavaScript Basic 01
JavaScript Basic 01JavaScript Basic 01
JavaScript Basic 01
 
120331 silverlight5新機能早めぐり
120331 silverlight5新機能早めぐり120331 silverlight5新機能早めぐり
120331 silverlight5新機能早めぐり
 
Marionettejs getting started
Marionettejs getting startedMarionettejs getting started
Marionettejs getting started
 
Tokyo GTUG Bootcamp2010
Tokyo GTUG Bootcamp2010Tokyo GTUG Bootcamp2010
Tokyo GTUG Bootcamp2010
 
Web アプリケーションにおけるクライアントサイドのデータハンドリングと可視化の実現
Web アプリケーションにおけるクライアントサイドのデータハンドリングと可視化の実現Web アプリケーションにおけるクライアントサイドのデータハンドリングと可視化の実現
Web アプリケーションにおけるクライアントサイドのデータハンドリングと可視化の実現
 
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
 
Springのプログラムモデルと動く仕様~テスト編~
Springのプログラムモデルと動く仕様~テスト編~Springのプログラムモデルと動く仕様~テスト編~
Springのプログラムモデルと動く仕様~テスト編~
 
Pro aspnetmvc3framework chap15
Pro aspnetmvc3framework chap15Pro aspnetmvc3framework chap15
Pro aspnetmvc3framework chap15
 

More from Hiroyuki Mori

2013 11-09 デスクトップ・アプリの価値を高めるモダン化
2013 11-09 デスクトップ・アプリの価値を高めるモダン化2013 11-09 デスクトップ・アプリの価値を高めるモダン化
2013 11-09 デスクトップ・アプリの価値を高めるモダン化
Hiroyuki Mori
 
データバインディング徹底攻略
データバインディング徹底攻略データバインディング徹底攻略
データバインディング徹底攻略
Hiroyuki Mori
 
Wpf・silverlightのアニメーションからwindowsストアアプリのアニメーションへ
Wpf・silverlightのアニメーションからwindowsストアアプリのアニメーションへWpf・silverlightのアニメーションからwindowsストアアプリのアニメーションへ
Wpf・silverlightのアニメーションからwindowsストアアプリのアニメーションへ
Hiroyuki Mori
 
Windowストアアプリ コントラクトとライフサイクル
Windowストアアプリ コントラクトとライフサイクルWindowストアアプリ コントラクトとライフサイクル
Windowストアアプリ コントラクトとライフサイクル
Hiroyuki Mori
 

More from Hiroyuki Mori (17)

Visual Studio 2022 30分一本勝負! at BuriKaigi2023
Visual Studio 2022 30分一本勝負! at BuriKaigi2023Visual Studio 2022 30分一本勝負! at BuriKaigi2023
Visual Studio 2022 30分一本勝負! at BuriKaigi2023
 
最近Preview公開されたAzure テストサービスを試してみた
最近Preview公開されたAzure テストサービスを試してみた最近Preview公開されたAzure テストサービスを試してみた
最近Preview公開されたAzure テストサービスを試してみた
 
Azure Load Testingを試してみた
Azure Load Testingを試してみたAzure Load Testingを試してみた
Azure Load Testingを試してみた
 
Visual Studio 2019 Updates Pickup!
Visual Studio 2019 Updates Pickup!Visual Studio 2019 Updates Pickup!
Visual Studio 2019 Updates Pickup!
 
2021 01-30 Visual Studio 2019 知っているか!?この機能 in BuriKaigi2021
2021 01-30 Visual Studio 2019 知っているか!?この機能 in BuriKaigi20212021 01-30 Visual Studio 2019 知っているか!?この機能 in BuriKaigi2021
2021 01-30 Visual Studio 2019 知っているか!?この機能 in BuriKaigi2021
 
Visual Studio 2019 新機能を時間のかぎりできるだけ!
Visual Studio 2019 新機能を時間のかぎりできるだけ!Visual Studio 2019 新機能を時間のかぎりできるだけ!
Visual Studio 2019 新機能を時間のかぎりできるだけ!
 
開発者のためのUIデザイン入門
開発者のためのUIデザイン入門開発者のためのUIデザイン入門
開発者のためのUIデザイン入門
 
Uno Platform か Blazor
Uno Platform か BlazorUno Platform か Blazor
Uno Platform か Blazor
 
.NET Core 3.0 で見る Client Apps #BuriKaigi #BuriKaigi2019
.NET Core 3.0 で見る Client Apps #BuriKaigi #BuriKaigi2019.NET Core 3.0 で見る Client Apps #BuriKaigi #BuriKaigi2019
.NET Core 3.0 で見る Client Apps #BuriKaigi #BuriKaigi2019
 
.NET開発者は、なぜクロスプラットフォームに取り組むべきか
.NET開発者は、なぜクロスプラットフォームに取り組むべきか.NET開発者は、なぜクロスプラットフォームに取り組むべきか
.NET開発者は、なぜクロスプラットフォームに取り組むべきか
 
Windows phone関係のなにか。
Windows phone関係のなにか。Windows phone関係のなにか。
Windows phone関係のなにか。
 
2014 07-19 はじめてのクラウド
2014 07-19 はじめてのクラウド2014 07-19 はじめてのクラウド
2014 07-19 はじめてのクラウド
 
クライアント技術から見たBuild2014 Wrap-up
クライアント技術から見たBuild2014 Wrap-upクライアント技術から見たBuild2014 Wrap-up
クライアント技術から見たBuild2014 Wrap-up
 
2013 11-09 デスクトップ・アプリの価値を高めるモダン化
2013 11-09 デスクトップ・アプリの価値を高めるモダン化2013 11-09 デスクトップ・アプリの価値を高めるモダン化
2013 11-09 デスクトップ・アプリの価値を高めるモダン化
 
データバインディング徹底攻略
データバインディング徹底攻略データバインディング徹底攻略
データバインディング徹底攻略
 
Wpf・silverlightのアニメーションからwindowsストアアプリのアニメーションへ
Wpf・silverlightのアニメーションからwindowsストアアプリのアニメーションへWpf・silverlightのアニメーションからwindowsストアアプリのアニメーションへ
Wpf・silverlightのアニメーションからwindowsストアアプリのアニメーションへ
 
Windowストアアプリ コントラクトとライフサイクル
Windowストアアプリ コントラクトとライフサイクルWindowストアアプリ コントラクトとライフサイクル
Windowストアアプリ コントラクトとライフサイクル
 

それではBehaviorでも使ってみましょうか。

  • 1. それではビヘイビアでも 使ってみましょうか 森 博之(もり ひろゆき) RIAアーキテクチャ研究会 極東IT-Engineers代表 Microsoft MVP – Development Platform Silverlight
  • 2. 自己紹介 • 森 博之(もり ひろゆき) – 極東IT-Engineers代表 • http://www.kit-eng.com – Blog • もり ひろゆきの日々是勉強 – http://moriblog.kit-eng.com • Twitter
  • 3. Agenda • ビヘイビアって? • ビヘイビアの種類について – トリガー – アクション – ビヘイビアー
  • 4. Behavior [名] • (人の)行動(様式[パターン])、態度、 挙動、振る舞い、言動、素行、そぶり、 行状、非どころの行い • (機械・ソフトウェアなどの)動き、動 き具合、動作、調子、反応、作用 • (物体・物質などの)性質 • (薬などの)作用、反応 • (生物の)行動、修正
  • 5. ビヘイビア(Behavior) • Expression Blend SDKの機能 – Silverlight SDKや.NET Frameworkにない機能 – WPFのTriggerの代替に考えられた実装パター ン →現在は本家のWPFに逆輸入 – 添付プロパティのメカニズムを利用して Interactionクラスで実現されている機能 • Expression Blend 3にはじめて搭載され る – Silverlight3と同時リリース
  • 6. WPFのTriggerって? • FrameworkElement・Style・ControlTemplate・ DataTemplateなどの挙動を監視し、Setterや Actionを実行する – 監視する挙動(TriggerBaseの派生クラス) • プロパティの変化(Trigger, MultiTrigger) • データの変化(DataTrigger, MultiDataTrigger) • 発生するイベント(EventTrigger) – Setterクラス • プロパティ設定 – 実行するアクション(TriggerActionクラスの派生ク ラス) • BeginStoryboardActionなどのストーリーボード操作 • SoundPlayなどの音声ファイルの再生
  • 7.
  • 8. 添付プロパティって? • XAMLの機能のひとつ • オブジェクト間の通信をサポートする機 能 • static readonly DependencyProperty TargetProperty = public 添付プロパティの多くは依存関係プロパ DependencyProperty.RegisterAttached( ティ “Target”, typeof(string), typeof(SampleClass), new FrameworkPropertyMetadata(string.Empty,)); public static void SetTarget(UIElement attachedElement, string value) { } public static string GetTarget(UIElement attachedElement) { }
  • 9. コードで添付プロパティを指定 する • XAMLおよびC#で表現 <Canvas> <Button Canvas.Top=“100” /> </Canvas> var c = new Canvas(); var b = new Button(); c.Children.Add(b); Canvas.SetTop(b, 100);
  • 10.
  • 11. 添付プロパティでTriggerっ て? • Expression Blend SDKのIteractionクラ ス • 以下のメンバーに注目 – GetBehaviorsメソッド – GetTriggersメソッド
  • 12. GetTriggersメソッド • 添付プロパティ • TriggerCollection型の戻り値を持つメ ソッド – Interactionクラスで管理されている Collectionオブジェクト→コレクション構文 • TriggerCollectionクラス – TriggerBaseオブジェクトのコレクション
  • 13. TriggerBaseクラスって? • インタラクショントリガーの抽象クラス • ~Triggerと名前の付くクラスは TriggerBaseを継承している • つまり、Iteraction.Triggersは複数の TriggerBaseの派生クラスを指定し保持す ることができる添付プロパティ
  • 14. TriggerBaseクラスの機能 • 主要メンバー – フィールド • protected object AssociatedObject; – 添付されたオブジェクトが格納されている – プロパティ • public TriggerActionCollection Actions; – TriggerActionのコレクション – メソッド • protected void OnAttached(); – 添付時 • protected void OnDetaching(); – 添付解除時 • protected void InvokeActions(); – Actionsに指定されたオブジェクトのActionメソッドを呼び出し
  • 15. 代表的なトリガー • EventTrigger – 指定オブジェクトのイベントを監視 • DataTrigger – データの変化を監視 • PropertyChangedTrigger – プロパティの変化を監視 • KeyTrigger – キー入力を監視
  • 16. TriggerActionは・・・ • 主要メンバー – プロパティ • protected object AssociatedObject; – メソッド • Protected abstract void Invoke(object parameter); • 挙動 – AssociatedObjectに対してActionを実行でき る – 異なる対象にActionを実行する場合は TargetedTriggerAction利用する
  • 17.
  • 18. となるとビヘイビアーって? • 添付プロパティ • つまりGetBehaviorメソッド – Trigger同様、Itractionクラスで管理されて いるコレクションを返すメソッド • BehaviorCollection – Behaviorオブジェクトのコレクション
  • 19. Behavior? • その他名前のとおり、添付されたオブ ジェクトもしくは指定のあったオブジェ クトに対しての振る舞いを追加したりカ スタムすることができるオブジェクト • Triggerのようにきっかけの指定は必要な い →ただし、Triggerのようにふるまわせるこ とも可能
  • 20.
  • 21. まとめ • ビヘイビアとは – 添付プロパティを利用して振る舞いや簡単な 処理を実行するメカニズム – Expression Blend SDKのみの機能 • Expression Blend SDK単体のダウンロードも可能 – 応用するといろんなことができますよ♪
  • 22. Microsoft Innovation Academy • マイクロソフト大手町テクノロジーセンターで実施 – Visual Studio 2010ではじめるWPFプログラミング入門 • 基礎編 12/8 • 応用編 12/9 – 開発者のためのSIlverlight4プログラミング • 前編 • 中編 • 後編 – Windows Phone プログラミング入門 • UI基礎編 12/6 • Phone機能編 12/7 – 開発者のためのWindows Azure • 入門 • 実践編