[英]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.