[英]Thumb Drag in MVVM, WPF, C#
我有一个在C#WPF中编写的工作应用程序。 我喜欢练习使用MVVM,所以我喜欢和MVVM一样编写应用程序。 但我遇到了一个问题。 在我的应用程序中我使用
<Thumb DragDelta="Thumb_Drag"
DragStarted="Thumb_DragStarted"
DragCompleted="Thumb_DragCompleted"
...
我如何在MVVM中编写这个“Drag&Drop / Draggable”示例? 我用“绑定”还是别的什么? 任何例子都会非常欢迎:)谢谢!
如果不明白请问我。
可以使用System.Windows.Interactivity
库,它可以作为项目中的参考添加。
添加命名空间:
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
并通过<i:InvokeCommandAction>
调用命令:
<Thumb>
<i:Interaction.Triggers>
<i:EventTrigger EventName="DragDelta">
<i:InvokeCommandAction Command="{Binding DataContext.ThumbDragDeltaCommand, RelativeSource={RelativeSource AncestorType={x:Type Window}}}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Thumb>
视图模型:
private ICommand ThumbDragDeltaCommand { get; set;}
public MainViewModel() //Constructor
{
ThumbDragDeltaCommand = new DelegateCommand(x =>
{
//EventHandler
//Do stuff...
}
}
但是,只要事件只触发图形更改,您仍然可以在代码隐藏中处理事件,同时仍然提交到MVVM模式。
根据您在这些事件处理程序中使用的逻辑类型,我不会在代码隐藏中看到它们存在问题。 毕竟MVVM只是一般指导而不是严格的规则。
如果您坚持在视图模型中实现它们,则可以添加对System.Windows.Interactivity
dll的引用,并将InvokeCommandAction
与Interaction.Trigger
一起使用。
<Thumb>
<i:Interaction.Triggers>
<i:EventTrigger EventName="Thumb_Drag" >
<i:InvokeCommandAction Command="{Binding SomeViewModelCommand}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Thumb>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.