ホーム > コンピュータ > C# > WPF in C# > Prism

ベクトルドロー・レベルゼロ+

Prism Library 5.0 for WPFを使用する高度なMVVMの筋書き 03[C# WPF Prism]

新規作成日 2015-10-15
最終更新日

原文

訳文

Advanced MVVM Scenarios Using the Prism Library 5.0 for WPF(外部サイト)

パターンと実践 ディベロパー・センター

Microsoft Prism Library 5.0 for WPFの開発者のガイド原文サイト)から:

コマンド

Commands

トリガとコマンドの相互作用

Interaction Triggers and Commands

コマンドへの代わりの方法は、トリガの相互作用とInvokeCommandAction動作のために、Visual Studio 2013のBlendを使用することです。


<Button Content="Submit" IsEnabled="{Binding CanSubmit}">
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="Click">
            <i:InvokeCommandAction Command="{Binding SubmitCommand}"/>
        </i:EventTrigger>
    </i:Interaction.Triggers>
</Button>

この方法は、あなたが、相互作用トリガに接続することができる、どんなコントロールのためにも使用できます。 それは、あなたが、ICommandSourceインターフェースを実装しない、あるいは、あなたが、既定のイベント以外のイベントで、 コマンドを呼び出したいとき、コマンドをコントロールに接続したい場合、特に役に立ちます。 あらためて、あなたが、コマンドのためのパラメータを指定する必要がある場合、 あなたは、CommandParameterプロパティを使用することができます。

続いて、Blend EventTrigger設定を、ListBoxのSelectionChangedイベントで聞き取るために、 どのように使用するかを示します。このイベントが、発生すると、SelectedCommandは、InvokeCommandActionによって呼び出されます。


<ListBox ItemsSource="{Binding Items}" SelectionMode="Single">
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="SelectionChanged">
            <i:InvokeCommandAction Command="{Binding SelectedCommand}" />
        </i:EventTrigger>
    </i:Interaction.Triggers>
</ListBox>

備考

有効なコントロールのコマンドとビヘイビアとの比較

コマンドをサポートするWPFコントロールは、あなたが、コントロールをコマンドに宣言的にフックすることができます。 これらのコントロールは、指定されたコマンドを呼び出します。ユーザーが、特定の方法のコントロールで相互作用する時、 例えば、ユーザーが、ボタンをクリックするとき、Buttonコントロールのためのコマンドが、呼び出されます。 コマンドに関連付けられるこのイベントは、修正と変更ができません。

また、ビヘイビアは、あなたが、宣言型のスタイルで、コントロールをコマンドにフックできます。 しかしながら、動作は、コントロールによって呼び出される、イベントの領域と関連付けられることができます。 そして、それらは、View Model内で、条件つきで関連するコマンド・オブジェクトやコマンド・メソッドの呼び出しを使用することができます。 言い換えると、動作は、有効なコマンドのコントロールとして、多くの同じ筋書きに対処することができます。 そして、それらは、より大きな度合の柔軟性とコントロールを提供するかもしれません。 あなたは、有効なコマンドのコントロールを使用するとき、そして、どの種類の動作を使用するのと同様に、動作を使用するとき、 選択をする必要があります。あなたが、機能によるビューで、View Model、あるいは、一貫性のために、コントロールを関連付けるために、 一つの仕組みを使用することを好む場合、あなたは、コマンドを本質的にサポートするためのコントロールでさえ、動作の使用について考えるかもしれません。

あなたが、View Modelでコマンドを呼び出すために、有効なコマンドのコントロールだけを使用する必要がある場合、 そして、あなたが、コマンドを呼び出すために、既定のイベントで満足している場合、動作は、必要とされないかもしれません。 同様に、あなたの開発者やUIデザイナーが、Visual Studio 2013のためのBlendを使用していない場合、 あなたは、ブレンドの動作に必要な追加の構文のため、 有効なコマンドのコントロール(または、ユーザー定義した添付動作)を好むかもしれません。

コマンドにEventArgsパラメータを渡す

Passing EventArgs Parameters to the Command

あなたが、ビューに配置されるコントロールによって発生するイベントに応じて、コマンドを呼び出す必要があるとき、 あなたは、PrismのInvokeCommandActionを使用することができます。PrismのInvokeCommandActionは、 2つの方法で、Blend SDK内の同じ名前のクラスと異なります。まず、PrismのInvokeCommandActionは、 コマンドのCanExecuteメソッドの戻り値に基づいて、関連するコントロールの使用可能な状態を更新します。 次に、PrismのInvokeCommandActionは、親のトリガから、それに渡されるEventArgsパラメータを使用します。 CommandParameterが、設定されていない場合、関連するコマンドにそれを渡します。

時には、あなたは、EventTriggerからEventArgsのような、親のトリガから来る、 コマンドにパラメータを渡す必要があります。その筋書きでは、 あなたは、BlendのInvokeCommandAction動作を使用することができません。

次のコードでは、あなたは、PrismのInvokeCommandActionが、TriggerParameterPathを呼び出すプロパティ持っていることを、見ることができます。 それは、コマンド・パラメータとして渡されるパラメータの(ひょっとしたら入れ子にされた)メンバーを指定するために、使用されます。 次の例では、SelectionChanged EventArgsのAddedItemsプロパティは、SelectedCommandコマンドに渡されます。


<ListBox Grid.Row="1" Margin="5" ItemsSource="{Binding Items}" SelectionMode="Single">
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="SelectionChanged">
            <!-- This action will invoke the selected command in the view model and pass the parameters of the event to it. -->
	   <!--この動作は、View Modelで選択されたコマンドを呼び出し、それにイベントのパラメータを渡します。-->
            <prism:InvokeCommandAction Command="{Binding SelectedCommand}" TriggerParameterPath="AddedItems" />
        </i:EventTrigger>
    </i:Interaction.Triggers>
</ListBox>

非同期相互作用を扱う

Handling Asynchronous Interactions

ユーザーとの対話処理パターン

User Interaction Patterns

高度な構築と接続

Advanced Construction and Wire-Up

MVVMアプリケーションをテストする

Testing MVVM Applications

詳細情報

More Information

Copyright (C) 2011-2016 kukekko All Rights Reserved.
kukekko@gmail.com
ご連絡の際はアドレスの@は半角にしてください。 また、お問い合わせページのURLの明記をお願いします。
「掲載内容は私自身の見解であり、所属する組織を代表するものではありません 」。
inserted by FC2 system