ここで WPF MVVM Light に関する多くの質問と回答を読みましたが、回答はほとんど片側のみを示し (XAML コードは以下を参照)、ViewModel コードはまったくありません。
<i:Interaction.Triggers>
<i:EventTrigger EventName="Drop">
<cmd:EventToCommand Command="{Binding Mode=OneWay, Path=DropCommand}"
PassEventArgsToCommand="True" />
</i:EventTrigger>
私は XAML Grid-Control で使用しており、ドラッグ アンド ドロップ ファイルを Windows エクスプローラーから (wpf) アプリケーションに適用したいと考えています。私は厳密にMVVMパターンを使用しています(コードビハインドを完全に避けてください)。JFYI、コード ビハインドでは、通常、Drop-Event のイベント ハンドラーには 2 つのパラメーターがあります。オブジェクト型の送信者と、DragEventArgs 型の e です。EventArgs だけが必要です。私の質問は、DragEventArgs を XAML から ViewModel に直接渡す方法ではなく、ViewModel (c# コード) で DragEventArgs を取得して使用する方法についてです。ViewModel では、次のように Command を記述します。
public RelayCommand<DragEventArgs> DropCommand
{
get
{
return _dropCommand ?? (_dropCommand = new RelayCommand<DragEventArgs>(Drop);
}
}
private void Drop()
{
// do something here
}
DropCommand に何かが欠けていると思うので、e (DragEventArgs の型) を使用できます。前もって感謝します。