我在这里阅读了许多关于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模式(完全避免使用代码后台)。 需要注意的是,在代码后台中,通常Drop-Event事件处理程序有两个参数:类型为object的发送者和类型为DragEventArgs的e。我只需要EventArgs。 我的问题不再是如何直接从XAML传递DragEventArgs到ViewModel,而是如何在ViewModel(C#代码)中获取和使用DragEventArgs。在ViewModel中,我像这样编写命令:
public RelayCommand<DragEventArgs> DropCommand
{
get
{
return _dropCommand ?? (_dropCommand = new RelayCommand<DragEventArgs>(Drop);
}
}
private void Drop()
{
// do something here
}
我认为我的DropCommand缺少一些东西,所以我可以使用e(DragEventArgs类型)。
谢谢您的帮助。