2011-01-14 9 views
0

Ich möchte zwei Formen in WPF zeichnen und sie zusammenführen. Dann möchte ich ein Drag/Drop-Ereignis an eine der ursprünglichen Formen anhängen.Verschmelzen von Formen und Anbringen von Partial Drag/Drop in WPF

Grundsätzlich können Sie nur ziehen, wenn Sie auf einen bestimmten Teil der Form klicken, aber die gesamte Form mit Ihnen ziehen. Hier

ist ein Code:

// Set up some basic properties for the two ellipses 
Point centerPoint = new Point(100, 100); 
SolidColorBrush ellipseColor_1 = new SolidColorBrush(Color.FromArgb(255, 0, 0, 255)); 
double width_1 = 10; double height_1 = 10; 
SolidColorBrush ellipseColor_2 = new SolidColorBrush(Color.FromArgb(50, 255, 0, 0)); 
double width_2 = 200; double height_2 = 200; 

// Create the first ellipse: A small blue dot 
// Then position it in the correct location (centerPoint) 
Ellipse ellipse_1 = new Ellipse() { Fill = ellipseColor_1, Width = width_1, Height = height_1 }; 
ellipse_1.RenderTransform = new TranslateTransform(point.X - width_1/2, point.Y - height_1/2); 

// Create the second ellipse: A large red, semi-transparent circle 
// Then position it in the correct location (centerPoint) 
Ellipse ellipse_2 = new Ellipse() { Fill = ellipseColor_2, Width = width_2, Height = height_2 }; 
ellipse_2.RenderTransform = new TranslateTransform(point.X - width_2/2, point.Y - height_2/2); 

// ??? 
// How should I merge these? 
// ??? 

// Now apply drag drop behavior to ONLY ellipse_1 
MouseDragElementBehavior dragBehavior = new MouseDragElementBehavior(); 
dragBehavior.Attach(ellipse_1); // This may change depending on the above 

// ... 
// Add new element to canvas 

Dieser Code erstellt zwei Kreise (ein großes und ein kleines). Ich möchte nur ziehen können, wenn der kleine angeklickt wird, aber ich möchte sie anhängen, so dass sie sich zusammen bewegen, ohne manuell Code hinzufügen zu müssen, der sich darum kümmert.

Antwort

1

Wenn Sie beide in eine Grid (oder Canvas, StackPanel usw.) setzen und das Ziehverhalten im Bedienfeld festlegen, werden sie "zusammengeführt". Wenn Sie IsHitTestVisible auf ellipse_2 auf false setzen, reagiert es nicht auf Mausereignisse, so dass es nicht ziehbar ist.