locked
ScatterView and drag-drop

    Question

  • You guys have done a really great job of taking the great multi-touch concepts/controls/APIs that we're built by the Surface team, brining them forward, and adding powerful features to them.  A big thing I found missing though is the ScatterView control (and ItemsControl which allows it's items to be freely manipulated) and drag-drop APIs.  Please have these high on the to-do list.  We do occasionally need to break out of the world of scrolling grids and it would be nice for built in controls to establish a consistent look & feel for those scenarios. 

    Note that I lump ScatterView & drag-drop together in this request because, in the Surface SDK, drag-drop is built on top of the ScatterView control.


    Robert Levy
    Friday, September 16, 2011 6:19 AM

Answers

  • Thanks for your feedback, which you should also consider reporting to the Connect Site.

    Review this thread regarding the Windows Feedback Tool.

    Greg Binkerd

     

    • Marked as answer by Greg Binkerd Friday, September 16, 2011 9:51 PM
    Friday, September 16, 2011 9:49 PM

All replies

  • Thanks for your feedback, which you should also consider reporting to the Connect Site.

    Review this thread regarding the Windows Feedback Tool.

    Greg Binkerd

     

    • Marked as answer by Greg Binkerd Friday, September 16, 2011 9:51 PM
    Friday, September 16, 2011 9:49 PM
  • Hey Robert,

    Have you tried enabling Manipulations on objects (IsManipulationEnabled)?

    I assume it would work much like SurfaceDragCursor; grab the DataContext of the thing I'm dragging and when I drop it, create a Control with the dataContext.

    Thursday, September 22, 2011 7:45 PM
  • Yeah, I'm familiar with the manipulation APIs (I actually worked on the WPF4 design for them during my time at MSFT :))

    ScatterView goes far beyond what a small bit of manipulation API code can get you though... it standardizes (and provide override APIs) for how z-order should be handled when multiple things are being manipulated at once, defines visual states & standardized animations for when items are grabbed/released, provides standardized drop shadows on items that are being moved around (non-trivial because a standard drop shadow techniques don't update their offsets realistically as the item moves/rotates), it applies smart "bounce" inertia when a flicked item still has inertia when it gets to the edge of the screen (you want the item to bounce back from the edge but only a little bit... don't want to have it end up back in the user's way), and of course it wraps up the whole thing in a super easy to use API.

    Drag and drop is even more complicated because the container of the thing you are dragging *from* is usually not the same as the container of the thing you are dragging *to* so you have to show the drag cursor in an adorner layer and do hit testing beneath it.  Hit testing is particularly tricky because there isn't a single obvious point to use for hit testing.  The cursor could be any arbitrary shape with any arbitrary layout transforms applied to it and it could have multiple fingers manipulating it.  The SurfaceDragDrop stuff has some smart defaults for hit testing but makes things possible to override where necessary.


    Robert Levy
    Thursday, September 22, 2011 8:27 PM