FC2ブログ

スポンサーサイト

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

Blend SDKのChangePropertyActionを使ってみる

 Blend SDKには便利なアクションやビヘイビアが用意されています。  Blend SDKのトリガー(ビヘイビア)はインタラクショントリガー(ビヘイビア)と呼ばれたりします。
 これらはスタイル等で使用するトリガーとは違い、コントロールに直接指定することができます。
 Blend SDKを使用するためにはBlend SDKをインストールし、参照設定にMicrosoft.Expression.InteractionsとSystem.Windows.Interactivityを追加する必要があります。
 また、Blend SDKを使用するXAMLでこれらのライブラリを使用可能にするためにXAML名前空間を追加する必要があります。
 今回は、ChangePropertyActionを使用してコントロールやViewModel(バインディングデータ)のプロパティを変更してみます。
 ViewModelのプロパティ変更デモ様にViewModelに適当なプロパティを用意します。
using Livet;

namespace Blend1.ViewModels
{
    public class MainWindowViewModel : ViewModel
    {
        #region Value変更通知プロパティ
        private string _Value;

        public string Value
        {
            get
            { return _Value; }
            set
            { 
                if (_Value == value)
                    return;
                _Value = value;
                RaisePropertyChanged();
            }
        }
        #endregion
    }
}
 次にViewでChangePropertyActionを使用します。
 このサンプルではボタンを押した際に押したボタン、他のコントロール、ViewModelのプロパティをそれぞれ変更しています。
<Window x:Class="Blend1.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:Blend1.Views"
        xmlns:vm="clr-namespace:Blend1.ViewModels"
        Title="MainWindow" Height="100" Width="425">
    
    <Window.DataContext>
        <vm:MainWindowViewModel/>
    </Window.DataContext>
    
    <StackPanel>
        <Button Content="ボタン">
            <i:Interaction.Triggers>
                <i:EventTrigger EventName="Click">
                    <ei:ChangePropertyAction PropertyName="Content" 
                                             Value="クリックされました。"/>
                    <ei:ChangePropertyAction TargetName="textBlock" 
                                             PropertyName="Text" Value="TargetName:クリックされました。"/>
                    <ei:ChangePropertyAction TargetObject="{Binding}" 
                                             PropertyName="Value" Value="TargetObject:クリックされました。"/>
                </i:EventTrigger>
            </i:Interaction.Triggers>
        </Button>
        
        <TextBlock Name="textBlock" Text=""/>
        <TextBox Text="{Binding Value}"/>
    </StackPanel>
</Window>
 インタラクショントリガーはコントロールに直接指定することができます。
 今回はボタンが押された際にアクションを実行させたいのでEventTriggerを使用しています。
 ChangePropertyActionではプロパティの変更対象をTargetName又はTargetObjectで指定します。
 TargetNameは他のコントロールを指定する場合に、TargetObjectはデータバインディングしているデータオブジェクト(ViewModel)を対象にする場合に使用します。
 どちらも指定されていない場合はインタラクショントリガーが発動したコントロールが対象になります。(この例の場合はボタン)
 PropertyNameで変更するプロパティ名を指定し、Valueにプロパティにセットする値を指定します。
 このサンプルの様に1つのトリガーに複数のアクションを指定することもできます。
 最初のアクションはボタンのContentを変更しています。
 2つ目のアクションはTextBlockのTextプロパティを変更しています。
 3つ目のアクションはViewModelのValueプロパティを変更しています。
 このサンプルを実行し、ボタンを押すと以下の様になります。
ChangePropertyAction.png  
スポンサーサイト

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

コメントの投稿

非公開コメント

カレンダー
11 | 2018/12 | 01
- - - - - - 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 31 - - - - -
全記事表示リンク

全ての記事を表示する

カテゴリ
タグリスト

月別アーカイブ
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ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。