none
GridView拖拽事件,设置了 CanDragItems="True",无法触发事件 RRS feed

  • 问题

  • 我在使用GridView做item的拖拽事件,设置了以下三个属性

     CanDragItems="True" CanReorderItems="True" AllowDrop="True"

    发现设置了 CanDragItems="True"之后,那些drag事件都无法触发了,包括:

    DragOver, DragEnter, Drop

    这样,在拖拽完之后就无法做操作了,我想要在拖拽结束之后做某些操作,该如何做呢?

    2012年8月2日 8:09

答案

  • DragOver等是指在外部有元素拖入GridView, 以GridView 为拖放的目标时候触发。
    不是在有内部元素相互拖动时候触发。

    所以你需要的是 DragItemsStarting 事件,在开始拖拽Item时候触发。在你拖拽后,如果Item位置变化了,则 GridView.ItemContainerGenerator.ItemsChanged 事件会被触发。


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    • 已标记为答案 kande_1988 2012年8月6日 2:01
    2012年8月3日 10:53
    版主

全部回复

  • DragOver等是指在外部有元素拖入GridView, 以GridView 为拖放的目标时候触发。
    不是在有内部元素相互拖动时候触发。

    所以你需要的是 DragItemsStarting 事件,在开始拖拽Item时候触发。在你拖拽后,如果Item位置变化了,则 GridView.ItemContainerGenerator.ItemsChanged 事件会被触发。


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    • 已标记为答案 kande_1988 2012年8月6日 2:01
    2012年8月3日 10:53
    版主
  • 不错...的确能用...

    之前我用另一种方法解决了,我发现reorderitems这个动作会让itemsource集合先remove然后再insert.所以我就自定义了一个集合,重写oninsert方法,也能在ReorderItems之后进入事件

    2012年8月6日 2:01