我正在寻找 Metro 中的 Drag/Drop 取消事件,这意味着如果用户将项目拖放到可放置区域之外。
我怎样才能做到这一点,或者有什么解决方法吗?
我正在寻找 Metro 中的 Drag/Drop 取消事件,这意味着如果用户将项目拖放到可放置区域之外。
我怎样才能做到这一点,或者有什么解决方法吗?
我还没有找到这样的事件(对于 c#/XAML)!也许(希望)最终版本中会存在一个事件!
作为临时解决方法,我已注册到Window.Current.CoreWindow.PointerReleased
-event。
然后在拖动开始时,我将布尔指示器设置为 true,如果拖动结束,PointerReleased
-event 将被触发,我可以测试布尔指示器。
解决方法
在 Page(或任何元素)的构造函数中注册到 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;
// ...
}
伙计,您可以在列表视图或拖动的项目上注册“指针捕获丢失”,而不是捕获在整个页面上释放的指针,我相信它至少触发的次数更少:D
listView_PointerCaptureLost(object sender, PointerRoutedEventArgs e){
//do the logic you want;
}