FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Blend SDKを使ってトリガーアクションを作る

 前回はBlend SDKを使ってビヘイビアを作成しましたが、今回はトリガーアクションを作成します。
 作り方は殆どビヘイビアの時と同じです。
 今回はコントロールのサイズを増加させるアクションを作成してみます。
using System.Windows;
using System.Windows.Interactivity;

namespace Blend6.Actions
{
    public class SizeIncreaseAction : TriggerAction<FrameworkElement>
    {

        #region 増加サイズ
        public double IncreaseSize
        {
            get { return (double)GetValue(IncreaseSizeProperty); }
            set { SetValue(IncreaseSizeProperty, value); }
        }

        public static readonly DependencyProperty IncreaseSizeProperty =
            DependencyProperty.Register("IncreaseSize", typeof(double), typeof(SizeIncreaseAction), new PropertyMetadata(10.0));
        #endregion

        protected override void Invoke(object parameter)
        {
            AssociatedObject.Width += IncreaseSize;
            AssociatedObject.Height += IncreaseSize;
        }
    }
}
 トリガーアクションを作成するためには、System.Windows.Interactivity.TriggerAction<T>を継承する必要があります。
 ビヘイビアの時と同じくTはアクションをアタッチするコントロールの型を指定します。
 今回はFrameworkElementを対象とすることで様々なコントロールで使用可能なアクションにしています。
 Invoke(object parameter)メソッドをオーバーライドしてアクションが実行されたときの処理を記述します。
 今回はアタッチされているコントロールのWidthとHeightを増加させています。
 増加量を自由に指定できるように依存関係プロパティで増加量を指定できるようにしました。

 それでは、このアクションを使ってみましょう。
 使い方はBlend SDKに実装されているトリガーアクションと同じです。
<Window x:Class="Blend6.Views.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
        xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"
        xmlns:l="http://schemas.livet-mvvm.net/2011/wpf"
        xmlns:v="clr-namespace:Blend6.Views"
        xmlns:vm="clr-namespace:Blend6.ViewModels"
        xmlns:actions="clr-namespace:Blend6.Actions"
        Title="MainWindow" Height="350" Width="525">
    
    <Grid>
        <Button Content="サイズ増加" Width="60" Height="30">
            <i:Interaction.Triggers>
                <i:EventTrigger EventName="Click">
                    <actions:SizeIncreaseAction IncreaseSize="20"/>
                </i:EventTrigger>
            </i:Interaction.Triggers>
        </Button>
    </Grid>
</Window>
 Blend SDKのトリガーアクションなので、インタラクショントリガーが引き金になります。
 これを実行すると以下の様にボタンが押される度にサイズが大きくなります。
TriggerActionデモ
 ビヘイビアと同じく、よく使う機能をトリガーアクションとして作成しておけば再利用ができて便利です。
 
スポンサーサイト

テーマ : プログラミング
ジャンル : コンピュータ

コメントの投稿

非公開コメント

カレンダー
10 | 2018/11 | 12
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -
全記事表示リンク

全ての記事を表示する

カテゴリ
タグリスト

月別アーカイブ
11  09  08  07  06  05  04  03  02  01  12  11  10  09  08  07  06  04  03  02  01  12  11  10  09  08  07  06  05  04  03  02  01  12  11  10  09 
最新記事
リンク
最新コメント
検索フォーム
Amazon
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。