Hi,
I am trying to drop shape into a container shape, but the shape is not displaying inside the container. Could anyone help me solve it? Here is my code.
EventManager.RegisterClassHandler(typeof(RadDiagramContainerShape), RadDiagramShape.DropEvent, new System.Windows.DragEventHandler(OnDrop));
private void OnDrop(object sender, System.Windows.DragEventArgs e) { e.Handled = true; if ((e.Data as DataObject)?.GetData(typeof(DragObject)) is DragObject dragObject) { var itemBase = (ActivityBase)Activator.CreateInstance(dragObject.ContentType); var p = e.GetPosition(MainDiagram); var shape= createDiagramShape(itemBase); RadDiagramContainerShape target = (sender as RadDiagramContainerShape); target.Items.Add(shape); } }private RadDiagramShape createDiagramShape(ActivityBase activity) { var shape = new RadDiagramShape { Content = activity, BorderThickness = new Thickness(1), UseGlidingConnector = true, HorizontalContentAlignment = HorizontalAlignment.Stretch, VerticalContentAlignment = VerticalAlignment.Stretch, DataContext = activity, UseDefaultConnectors = false, IsRotationEnabled = false, Background = new SolidColorBrush(Color.FromArgb(255, 255, 255, 255)), GlidingStyle = GlidingStyle.Rectangle }; var outconnector = new InOutConnector { Offset = new Point(1, 0.2), Direction = eDirection.drOut, Name = "out" + DateTime.Now.Millisecond }; shape.Connectors.Add(outconnector); var inconnector = new InOutConnector { Offset = new Point(0, 0.2), Direction = eDirection.drIn, Name = "in" + DateTime.Now.Millisecond, }; shape.Connectors.Add(inconnector); return shape; }
The following function to drop shape inside the diagram works.
private void OnDropShape(object sender, DragEventArgs e) { e.Handled = true; if ((e.Data as DataObject)?.GetData(typeof(DragObject)) is DragObject dragObject) { var itemBase = (ActivityBase) Activator.CreateInstance(dragObject.ContentType); var p = e.GetPosition(MainDiagram); var shape = createDiagramShape(itemBase); MainDiagram.AddShape(shape, MainDiagram.GetTransformedPoint(p)); _mainViewModel.ShapeCollection = MainDiagram.Shapes; _mainViewModel.SelectedActivity = calendar.DataContext as ActivityBase; } }
Thanks,
Rahul
