Ich entwickle eine Dashboard-Anwendung, in der ich die Größe des Diagramms anpassen und seine Diagrammwidgets dahin verschieben kann, wo sie sind Bitte. Ich hatte Probleme damit, sich gleichzeitig bewegen und verkleinern zu können. Der Grund dafür ist, dass, wenn die Diagramm Ausrichtungen eingestellt sind auf die folgenden:Verschiedene Methoden zum Ziehen und Verschieben von Objekten ohne horizontale oder vertikale Ausrichtung nach links und oben
chart.HorizontalAlignment = HorizontalAlignment.Left;
chart.VerticalAlignment = VerticalAlignment.Top;
... der Umzug perfekt funktionieren wird, aber die Größe ändern wird in nicht nachweisbar Richtungen gehen verrückt. Wenn ich die Ausrichtungen der folgenden Schalter:
chart.HorizontalAlignment = HorizontalAlignment.Stretch;
chart.VerticalAlignment = VerticalAlignment.Stretch;
... wird der Umzug weg sein, aber die Größe ändern wird anständig arbeiten.
Der Umzug Code lautet wie folgt:
public void chart_MouseMove(object sender, MouseEventArgs e)
{
C1Chart chart = sender as C1Chart;
if (!ModifierKey)
{
if (isMouseCaptured)
{
// Calculate the current position of the object.
double deltaV = e.GetPosition(null).Y - mouseVerticalPosition;
double deltaH = e.GetPosition(null).X - mouseHorizontalPosition;
double newTop = deltaV + (double)chart.Margin.Top;
double newLeft = deltaH + (double)chart.Margin.Left;
// Set new position of object.
chart.Margin = new Thickness(newLeft, newTop, 0, 0);
// Update position global variables.
mouseVerticalPosition = e.GetPosition(null).Y;
mouseHorizontalPosition = e.GetPosition(null).X;
}
}
}
Die mouseVerticalPosition, mouseHorizontalPosition, IsMouseCaptured sind in einem Diagramm Maus zugewiesen Down-Ereignis und ModifierKey ist boolean zu sagen, wenn eine der Tastatur Modifikatoren gedrückt werden wissen, ob sich nicht zu bewegen. Dieser Code wurde von MSDN entfernt, aber ich bin offen für alternative Lösungen.
Der Größencode kann hier (Microsoft Example) oder hier (Denis Vuyka Blog) gefunden werden. Hier ist meine Frage: Gibt es andere Möglichkeit, den Drag & Umzug oder die Größenänderung (Adorner-Klasse), die ich nicht sehe. Oder gibt es eine Möglichkeit, diesen Code mit einem Alignment-Hack zu verwenden?
habe ich noch nicht. Arbeitet so gut, bis ich eine sauberere Lösung finde. Danke für den Vorschlag! –
Implementiert heute (Ich dachte, ich poste, falls jemand anderes benötigt) war in der Lage zu tun: MouseDragElementBehavior mouseBehavior = new MouseDragElementBehavior(); mouseBehavior.ConstrainToParentBounds = true; MausBehavior.Attach (Diagramm); und zur Arbeit zu kommen. Danke noch einmal –