Ich habe einige benutzerdefinierte Steuerelemente in meinem Canvas.Machen Sie einen Unterschied zwischen Auswählen und Ziehen in WPF
Diese Steuerelemente können per Drag & Drop verschoben oder per Klick ausgewählt werden.
nun implementiert ich die Drag and Drop etwas wie folgt aus:
protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e)
{
base.OnPreviewMouseLeftButtonDown(e);
this.isDragInProgress = false;
// Cache the mouse cursor location.
this.origCursorLocation = e.GetPosition(this);
// Walk up the visual tree from the element that was clicked,
// looking for an element that is a direct child of the Canvas.
var source = e.Source;
var element = this.FindCanvasChild(source as DependencyObject);
if (element == null || !(element is MyControl))
return;
this.ElementBeingDragged = element;
// Get the element's offsets from the four sides of the Canvas.
this.draggedLeft = Canvas.GetLeft(this.ElementBeingDragged);
this.darggedTop = Canvas.GetTop(this.ElementBeingDragged);
// Set the Handled flag so that a control being dragged
// does not react to the mouse input.
e.Handled = true;
this.isDragInProgress = true;
}
Nun, mein Problem ist, dass ich nicht MyControl Maustaste darauf klicken ... (es gibt keine Mouseclick-Ereignis auf dem benutzerdefinierten Control, noch MouseDown funktioniert jetzt ..)
Wenn ich e.Handled = true;
kommentieren wird das Steuerelement die Auswahl ändern, wenn Sie ziehen, wenn Sie es nicht kommentieren, wird das Steuerelement die Auswahl überhaupt nicht ändern .... (