2009-06-26 6 views
0

SL3には、イベントをトラップするための接続された動作を持つプリズムコマンドを使用するデータフォームがあります。プリムを介してsilverlightコマンドがイベントのイベント引数を取得していますか?

(これはかなりしっかりとこのブログの記事を、次のとおりです。 http://blogs.southworks.net/dschenkelman/2009/04/18/commands-with-attached-behavior-for-silverlight-3-dataform/#comment-607

基本的に、それはすべてのフックアップと作業罰金だ、しかしのviewmodelで、私はイベントのイベント引数にアクセスする方法を見ることができません。 VMのコンストラクタで

私は、デリゲートのコマンドを定義します。

this.EditEnded = new DelegateCommand<object>(o => { 
    //how can I tell if the button clicked was cancel or save? 
} 

をしかし、私はので、私は何をすべきかを定義することができますしDataFormItemEditEndedEventArgsプロパティにアクセスする必要がありますか?ユーザーがキャンセルまたはコミットしたかどうかに応じて、異なるアクションを実行する必要があります。これはCommandDelegateにEditAction(または任意の他、あなたが欲しい)を送信し

private void ItemEditEnded(object sender, DataFormItemEditEndedEventArgs e) 
{ 
    this.CommandParameter = e.EditAction; 
    ExecuteCommand(); 
} 

答えて

2

バックパラメータを取得するには、このようなあなたのCommandBehaviorBase派生クラスを編集することができます。この場合、ではなく、にパラメータの添付プロパティを追加します。添付されたプロパティクラスを適切に編集します(CommandParameterを省略します)。私はこのアプローチに賛成ではない(ちょっと非標準的だと思われる)、他の誰かが別の提案をしているのだろうかと思う。

つまり、さまざまな種類のイベント(コミットなどのためのイベント)をいつでも追加することができます。もう少し純粋ですが、余分なコードがたくさんあることになります。この場合、あなたはそれで逃げることができますが、他のイベントでは、マウスの座標や何かばかげたことを伝えることは不可能になります。

私のvideo on Prism Commands。より静的なパラメータを扱う静的に関連付けられたプロパティに基づいてメソッドを並べ替える方法については、「コマンドパラメータ」を参照してください。

<Button Content="Save" 
     HorizontalAlignment="Center" 
     VerticalAlignment="Bottom" 
     cal:Click.Command="{Binding GetCompanyData}" 
     cal:Click.CommandParameter="SaveButton" 
     /> 
+0

こんにちはエリック、私はすでにあなたのスクリーンキャストを見てきました。私はまだこれがどのようにイベントの引数を取得するために使用できるか見ていない?あなたは詳しく説明できますか? – ChadT

+0

私はあまりにも早く答えました。私は上記の代替提案を提供しました。 –

0

たぶん、あなたは別々のボタンやアクションのための別々のコマンド(SaveCommandとCancelCommand)を宣言する必要があります。

関連する問題