Fluid Drag-Drop Experience
Adding a smooth drag and drop experience to your existing business applications
is easy with ClientUI through simple XAML declaration. Even better, the comprehensive
library is extended to support Silverlight and WPF platforms – delivering superior
and consistent dragdrop behavior with no additional code changes.
Customizable Drag Effects
When an object is being dragged, a shadow copy of the source object is created.
You can further modify the DragEffect property. There are four,
Copy, Link, Move, and Space.
Each DragEffect property comes with predefined tooltip image and
text. You can customize these using TooltipIcon and TooltipText
properties. Use TooltipOffset property to set the tooltip position
and TooltipLatency to control the tooltip text show delay.
All ClientUI controls that built upon the DragDrop Framework are engineered with
MVVM-ready architecture which allows you to obtain the dropped items in the ViewModel.
The dropped items can be accessed through the DroppedItems property, which is populated
before the dropped items are added to the designated items source.
In addition to attaching drag behavior declaratively in XAML, you can also attach
drag behavior to a UIElement using the provided API, DragDrop.DoDragDrop
Attach Drop Target
With DropTargetBehavior, you can easily customize the tooltip when an object is
being dragged over to a target element by specifying the TooltipIcon
property and the TooltipText property. You can also determine the
drop action from DropBehavior property if the drop target is a
There are three applicable drop behaviors, AppendChild, Replace, and Custom.
AppendChild will remove the dragged object from the original source and append
it to the drop target’s children. Replace will completely remove the dragged
object and replace it on the drop target’s children. Custom is an advanced
mode which allows you to implement your custom drop behavior.
When an object is dragged, the ClientUI DragDrop Framework detects the available
drop target within a certain scope determined by the DragDropScope
property. The default value for this property is Global which means that
the scope is set to the visual root of your application. This means you can drop
it to any valid drop target within your application. Use the Parent mode
to restrict the valid drop zone.
Integration with ItemsControl
ItemsControl such as ListBox (native), UXListBox,
UXFlow, and many others use Panel to arrange their items. You can
change the Panel used to arrange those items from ItemsPanel
property. This gives you the flexibility to choose any panels in order to control
the arrangement of your items. You can use UXPanel to easily add drag and drop functionality
to your items control.
ClientUI’s dragdrop operations are event-driven based model. Both the drag source
and the drop target use a standard set of events to handle its operations.
Working with Data Object
It is very common that during a dragdrop operation, data and information exchange
occur especially in line-of-business applications. ClientUI DragDrop architecture
is thoughtfully designed to enable this requirement.
Query Data Object
Because a single data object can contain an arbitrary number of data formats, data
objects facilities a retrieval mechanism to obtain a list of available data formats.
Retrieving data from a data object of a particular format involves calling one of
the GetData methods and specifying the desired data format. One of the GetDataPresent
methods can be used to check for the presence of a particular data format. GetData
returns the data in an Object. Depending on the data format, this object can be
cast to a type-specific container.