在 WPF 的同一个按钮中绑定命令和 DragEnter 和 Drop 事件

Binding a command and DragEnter and Drop events in the same button in WPF

在我的 WPF MVVM (NET 3.5) 应用程序中,我有以下按钮:

<Button AllowDrop="True"  
        Drop="btnDelete_Drop" 
        DragEnter="btnDelete_DragEnter"
        Content="Delete"/>

按钮行为如下:

现在,我想控制按钮上的点击事件,并且我只想为这个事件使用命令。

所以我的问题是:

有没有什么方法可以通过 Drop 和 DragEnter 事件只为点击事件关联一个命令并保持上面的其余事件?

似乎可以使用 Prism(参见 here)通过导入以下参考来完成:

xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"

但我的问题是它与 WPF .NET 3.5 不兼容...所以还有其他不使用 Prism 的方法吗?

当然可以使用命令属性.....

<Button AllowDrop="True"  
        Drop="btnDelete_Drop" 
        DragEnter="btnDelete_DragEnter"
        Command="{Binding ClickCommand}"
        Content="Delete"/>

并在您的 ViewModel 中实现一个名为 ClickCommand 的 ICommand

Is there any way to associate a command only for click event and keep the rest of events as above, through Drop and DragEnter events?

是的。这正是 ButtonCommand 属性 的用途。将此 属性 绑定到视图模型的 ICommand 属性:

<Button Command="{Binding YourCommandProperty}" />

您将需要 ICommand 接口的实现。 Prism 提供了一个名为 DelegateCommand 的,但您可以定义自己的一个。请参阅以下博客 post 了解更多信息:https://blog.magnusmontin.net/2013/06/30/handling-events-in-an-mvvm-wpf-application/。它包括一个示例实现。