ビュー内の WPF イベントを ViewModel にバインドする最適な方法は何ですか?
ビューにドロップ イベントがありますが、バインディングにより ViewModel に置き換えたいです。
いくつかの解決策を見つけましたが、どれも期待どおりには機能しませんでした。
コードを表示:
<TextBox
AllowDrop="True"
PreviewDrop="email_Drop" />
ベストアンサー1
MVVM および XAML でイベントを処理する 1 つの方法は、Blend Interactivity 機能を使用することです。この名前空間には、InvokeCommandAction クラスと CallMethodAction クラスが含まれています。
InvokeCommandAction を使用すると、任意のイベントをビュー モデル コマンドにバインドできます。一方、CallMethodAction を使用すると、任意のイベントをビュー モデル メソッドにバインドできます。
たとえば、Button の DoubleClick イベントをビュー モデル コマンドにバインドする場合は、次のようにします。
<Button>
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseDoubleClick">
<i:InvokeCommandAction Command="{Binding Path=DoSomethingCommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
この名前空間を宣言します:
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
プロジェクトでこれを参照するために必要なのは、Expression Blend または Expression Blend SDK をインストールすることだけです。