2016-10-18 10 views
4

ViewModelでイベントをバインドするとします。MVVMでイベントをバインドし、イベント引数をコマンドパラメータとして渡します。

Iは

CLR名前空間を使用した:System.Windows.Interactivity;アセンブリ= System.Windows.Interactivity

iが同じ

<Canvas Grid.Row="2" Grid.Column="2" x:Name="InteractiveCanvas" Style="{StaticResource canvasChartStyle}" ClipToBounds="True" > 
     <intr:Interaction.Triggers> 
      <intr:EventTrigger EventName="MouseEnter"> 
       <intr:InvokeCommandAction Command="AppointmentEditing" /> 
      </intr:EventTrigger> 
     </intr:Interaction.Triggers> 
    </Canvas> 

のトリガを使用するが、私は、使用するイベント引数が必要です。ここでは同じことができません。

wpfでは、イベントをバインドしてイベント引数を取得する可能性がありますか? MVVM LiteまたはPRISMを使用しています。

私はちょうど

+3

[MVVM渡すEventArgsとしてコマンドパラメーター](http://stackoverflow.com/questions/6205472/mvvm-passing-eventargs-as-command-parameter) – YuvShap

+2

CommandParameterを使用すれば十分でしょうか? – Belterius

+1

とCommandParameter、CommandParameterでイベント引数をバインドする方法 –

答えて

1

はMVVM - ライトフレームワークを見てみましょうCommandParameter ..Itのすべて:)

<Canvas Grid.Row="2" Grid.Column="2" x:Name="InteractiveCanvas" Style="{StaticResource canvasChartStyle}" ClipToBounds="True" > 
     <intr:Interaction.Triggers> 
      <intr:EventTrigger EventName="MouseEnter"> 
       <intr:InvokeCommandAction Command="{Binding AppointmentEditing}" CommandParameter="YourParameters" /> 
      </intr:EventTrigger> 
     </intr:Interaction.Triggers> 
    </Canvas> 
+3

しかし、どのようにパラメータとしてmouseeventargsを渡すことができますか? –

+0

http://stackoverflow.com/questions/6205472/mvvm-passing-eventargs-as-command-parameterを確認してください。これは助けてください – Thierry

0

を使用すべきイベント引数を取得したいです。 EventToCommandの実装には、PassEventArgsToCommandオプションが含まれています。

詳しくは、Laurent Bugnionのthis questionおよびthis old blog postを参照してください。

+0

純粋なWPFのアイデアを提案できるかどうか、ここではどのフレームワークも使用できませんか? –

+0

フレームワークを使用すると何が問題になりますか?なぜあなたは車輪を再発明したいのですか? MVVMLightのソースコードをダウンロードし、関連するクラス(EventToCommand)をコピーすることをお勧めします。cs)を自分のライブラリーに追加する - https://mvvmlight.codeplex.com/SourceControl/latest – Peregrine

+0

@VisakhVAはいPassEventArgsToCommand = "True"を使用している場合は、あなたのコマンドでlitleを変更する必要があります。 – Coding4Fun

2

あなたは追加のDLLのことでそれを行うことができます:あなたのXAMLで

  • System.Windows.Interactivitiy
  • Microsoft.Expression.Interactions

を:

をCallMethodActionクラスを使用します。

EventNameを使用して、必要なイベントを呼び出します。 MethodNameMethodという名前を指定します。

public void ShowCustomer() 
//The method must be public & can take 0 parameters or 2 parameters i.e. 
//object sender & EventArgs args 
{ 
    // Do something. 
} 

P.S:あなたのViewModelコードで

<Window> 
    xmlns:wi="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity" 
    xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"> 

    <wi:Interaction.Triggers> 
     <wi:EventTrigger EventName="SelectionChanged"> 
      <ei:CallMethodAction 
       TargetObject="{Binding}" 
       MethodName="ShowCustomer"/> 
     </wi:EventTrigger> 
    </wi:Interaction.Triggers> 
</Window> 

これは質問への本当の後半応答であるが、私はそれはあなたを助け願っています。

+0

これは、イベント引数を取得するためだけに別のライブラリを追加する必要はありません。 – hfann

+0

@hfann:どのように聞いてもよろしいですか? Interaction.Triggers、EventTrigger&CallMethodActionは前述のアセンブリの一部です。 – Ankit

+0

私がlibarayを参照したとき、私はMVVMLightまたはPrismを意味しました。既にSystem.Windows.Interactivityu DLLを使用しています。 – hfann

関連する問題