在 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"/>
按钮行为如下:
- 如果某些列表视图项目被拖放到此按钮上,则会引发视图中的某些事件 btnDelete_DragEnter" 和 "btnDelete_Drop"。在放下时,通过调用方法删除掉落的项目在视图的视图模型中。
现在,我想控制按钮上的点击事件,并且我只想为这个事件使用命令。
所以我的问题是:
有没有什么方法可以通过 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?
是的。这正是 Button
的 Command
属性 的用途。将此 属性 绑定到视图模型的 ICommand
属性:
<Button Command="{Binding YourCommandProperty}" />
您将需要 ICommand
接口的实现。 Prism 提供了一个名为 DelegateCommand
的,但您可以定义自己的一个。请参阅以下博客 post 了解更多信息:https://blog.magnusmontin.net/2013/06/30/handling-events-in-an-mvvm-wpf-application/。它包括一个示例实现。
在我的 WPF MVVM (NET 3.5) 应用程序中,我有以下按钮:
<Button AllowDrop="True"
Drop="btnDelete_Drop"
DragEnter="btnDelete_DragEnter"
Content="Delete"/>
按钮行为如下:
- 如果某些列表视图项目被拖放到此按钮上,则会引发视图中的某些事件 btnDelete_DragEnter" 和 "btnDelete_Drop"。在放下时,通过调用方法删除掉落的项目在视图的视图模型中。
现在,我想控制按钮上的点击事件,并且我只想为这个事件使用命令。
所以我的问题是:
有没有什么方法可以通过 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?
是的。这正是 Button
的 Command
属性 的用途。将此 属性 绑定到视图模型的 ICommand
属性:
<Button Command="{Binding YourCommandProperty}" />
您将需要 ICommand
接口的实现。 Prism 提供了一个名为 DelegateCommand
的,但您可以定义自己的一个。请参阅以下博客 post 了解更多信息:https://blog.magnusmontin.net/2013/06/30/handling-events-in-an-mvvm-wpf-application/。它包括一个示例实现。