The described requirement is not supported out of the box and it requires customization in order to be achieved - which is not very straightforward task. However, I can give you couple ideas on how to achieve the desired functionality.
- To sync the selection you can use the UIElement.AddHandler() method to subscribe for the SelectionChanged event of all ListBox elements in the diagram and inside the event handler use the SelectionService of the diagram to select the parent shape that holds the list box. Here is an example:
// other code
sender, SelectionChangedEventArgs e)
var listBox = (ListBox)e.OriginalSource;
var service =
var shape = listBox.ParentOfType<RadDiagramShape>();
- On the other hand the dragging will require some additional implementation. For example you can subscribe for the MouseMove event of the diagram and implement custom drag when the mouse is over the ListBox element.
sender, MouseEventArgs e)
var draggingService =
(e.LeftButton == MouseButtonState.Pressed && !draggingService.IsDragging)
var shape =
// get the mouse position and translate it to diagram position using the diagram's GetTransformedPoint() method
// calculate the shape's new position based on the mouse's new and the old coordinates
// set the new position to on the shape's Position property - shape.Position = newPosition
Please try those approaches and let me know if they work for you.