2012-07-27 48 views
3

即時尋找在地鐵中的拖放取消事件,這意味着如果用戶拖動一個項目,並將其放置在可放置區域之外。WinRT中是否存在拖放取消事件?

我該如何做到這一點或有什麼解決方法?

+0

@downvoter:爲什麼downvote? – HCL 2012-08-12 20:04:28

回答

4

我還沒有找到這樣的事件(對於C#/ XAML)!也許(希望)一個事件將在最終版本中存在!

作爲臨時解決方法,我已註冊到Window.Current.CoreWindow.PointerReleased -event。
在開始拖動時,我將布爾指示符設置爲true,如果拖動結束,將觸發--event,並且我可以測試布爾指示符。

解決方法
在頁面(或其他元素)的構造函數註冊到PointerReleased:

Window.Current.CoreWindow.PointerReleased+=CoreWindow_PointerReleased; 

的事件處理程序可能看起來在某種程度上是這樣的:

void CoreWindow_PointerReleased(CoreWindow sender, PointerEventArgs args) { 
    if (m_isDragging) { 
      m_isDragging = false; 
      // Here you know that a drag-operation came to a end 
    } 
} 

和指示你可以設置如下:

private void Entries_DragStarting(object sender, DragItemsStartingEventArgs e){    
     m_isDragging = true; 
     // ... 
    } 
+0

非常有幫助,非常感謝。 – MoDu 2014-10-10 22:06:33

0

哥們, 而不是捕捉整個頁面上發佈的指針 可以註冊「指針捕捉丟失」的列表視圖或拖動項目,我相信它觸發至少減倍:d

listView_PointerCaptureLost(object sender, PointerRoutedEventArgs e){ 
//do the logic you want; 
}