Upgrade to Pro — share decks privately, control downloads, hide ads and more …

もっと!WPF勉強会 第2回 Behavior/WPFStudyMore2

もっと!WPF勉強会 第2回 Behavior/WPFStudyMore2

もっと!WPF勉強会 第2回 Behavior (WPF勉強会の通算第7回)

説明後に実演するライブコーディングのコードはこちら。
https://github.com/hachiilcane/WpfStudy

Avatar for hachiilcane

hachiilcane

March 01, 2022
Tweet

More Decks by hachiilcane

Other Decks in Programming

Transcript

  1. BehaviorΫϥεͷงғؾ Microsoft.Xaml.Behaviors.Wpfඞཁ public class BeepBehavior : Behavior<Button> { protected override

    void OnAttached() { base.OnAttached(); this.AssociatedObject.Click += Button_Click; } protected override void OnDetaching() { this.AssociatedObject.Click -= Button_Click; base.OnDetaching(); } private void Button_Click(object sender, System.Windows.RoutedEventArgs e) { // Կ͔ViewଆͷॲཧɻϘλϯԡͨ͠ΒԻ͕໐Δͱ͔ } }
  2. XAMLଆͰίϯτϩʔϧ ʹBehaviorΛ௥Ճ͢Δ <Button> <Behaviors:Interaction.Behaviors> <view:BeepBehavior /> </Behaviors:Interaction.Behaviors> </Button> <Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:view="clr-namespace:WpfStudy.View" xmlns:Behaviors=“http://schemas.microsoft.com/xaml/behaviors” ʙҎԼུ
  3. Behaviorͷߏ଄ΛΑ͘ݟ Δͱ public class SomethingBehavior : Behavior<Button> { protected override

    void OnAttached() { base.OnAttached(); this.AssociatedObject.Click += Button_Click; } protected override void OnDetaching() { this.AssociatedObject.Click -= Button_Click; base.OnDetaching(); } private void Button_Click(object sender, System.Windows.RoutedEventArgs e) { // Կ͔ViewଆͷॲཧɻϘλϯԡͨ͠ΒԻ͕໐Δͱ͔ } } ࣮ߦ͢Δ͖͔͚ͬ BehaviorͰ࣮ߦ͢Δॲཧ
  4. Trigger & TriggerAction public class ButtonClickTrigger : TriggerBase<Button> { protected

    override void OnAttached() { base.OnAttached(); this.AssociatedObject.Click += Button_Click; } protected override void OnDetaching() { this.AssociatedObject.Click -= Button_Click; base.OnDetaching(); } private void Button_Click(object sender, System.Windows.RoutedEventArgs e) { // ࢠཁૉͷΞΫγϣϯΛ࣮ߦ this.InvokeActions(e); } } public class BeepAction : TriggerAction<DependencyObject> { protected override void Invoke(object parameter) { // ԻΛ໐Β͢ॲཧ } }