【问题标题】:Is there an Drag/Drop Cancelled Event in WinRT?WinRT 中是否存在已取消拖放事件?
【发布时间】:2012-07-27 11:09:40
【问题描述】:

我正在寻找 Metro 中的 Drag/Drop 取消事件,这意味着如果用户将项目拖放到可放置区域之外。

我怎样才能做到这一点或者有什么解决方法?

【问题讨论】:

  • @downvoter:为什么投反对票?

标签: c# drag-and-drop windows-runtime


【解决方案1】:

我还没有找到这样的事件(对于 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;
        // ...
    }

【讨论】:

    【解决方案2】:

    老兄, 而不是捕获在整个页面上释放的指针 您可以在列表视图或拖动的项目上注册“指针捕获丢失”,我相信它至少触发的次数更少:D

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-08
      • 1970-01-01
      • 1970-01-01
      • 2018-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多