2012-04-06 7 views
0

Ich möchte die Margin Eigenschaft auf die Mitte der UIElement und nicht die obere linke Ecke verweisen. Auf diese Weise, wenn ich die Breite/Höhe des UIElement ändere, bleibt es an der gleichen Stelle.Wie wird der Rand relativ zum Mittelpunkt des UIElement und nicht zu seiner oberen linken Ecke in einem Raster gesetzt?

Gibt es eine Möglichkeit, dieses Verhalten zu konfigurieren, oder muss ich mich auf Binding verlassen, um die Anpassung vorzunehmen?

Danke.

Zum Beispiel, wenn ich die Width/Height des folgenden Rechtecks ​​ändern, wird seine Mitte verschieben.

<Grid> 
    <Rectangle Fill="#FF991C1C" Width="10" Height="40" HorizontalAlignment="Left" Margin="90,161,0,0" VerticalAlignment="Top"/> 
</Grid> 
+1

ein Element margin „relativ zu seiner oberen linken Ecke“ nicht den Fall, es ist nur die [Dicke] (http://msdn.microsoft.com/en-us/library/system.windows. thickness.aspx) (oder vier verschiedene Dicken) eines Rahmens um das Begrenzungsrechteck des Elements. In diesem Sinne kann es auch nicht relativ zum Zentrum des Elements sein. – Clemens

+0

In diesem Fall wird der Rand des Rectangle verwendet, um ihn im Grid zu positionieren, oder? Und der Versatz des Randes ist relativ zur oberen linken Ecke des Rechtecks, richtig? – Nock

+0

Das hängt von der Ausrichtung innerhalb einer Gitterzelle ab. Wenn HorizontalAlignment "Right" ist, wird das Element rechtsbündig mit einem rechten Rand relativ zur oberen - ** rechten ** Ecke ausgerichtet. – Clemens

Antwort

0

Für einen obskuren Grund kann ich nicht herausfinden, dass die Rechteck-Ausrichtung sollte Zentrum sein, wenn ich die Margin zu sein in Bezug auf die Mitte will. Dieser Code lässt mein Rectangle sich so verhalten, wie ich es wollte.

<Grid> 
    <Rectangle Fill="#FF991C1C" Width="10" Height="40" HorizontalAlignment="Center" Margin="90,161,0,0" VerticalAlignment="Center"/> 
</Grid> 
2

Warum nicht den Rand entfernen und diese verwenden?

HorizontalAlignment="Center" 
VerticalAlignment="Center" 
+0

Ich möchte nicht, dass das Rechteck in der Mitte des Gitters ist, ich möchte es immer noch an einer bestimmten Stelle innerhalb des Gitters positionieren, aber der Punkt muss relativ zur Mitte des Rechtecks ​​sein. – Nock

+1

Sie hatten damit fast Recht. Ich hätte das Alignment in die Mitte schalten sollen, aber die Marge behalten. Ich war mir fast sicher, dass ich das gestern auf Blend getestet habe, aber ich konnte nicht das gewünschte Ergebnis erzielen, aber jetzt habe ich einen neuen Test von Grund auf erstellt und es funktioniert! Danke trotzdem. – Nock

+0

Wenn Sie Ihr Objekt zentriert ausrichten, können Sie immer noch eine 'LayoutTransform' oder' RenderTransform' anwenden, um es um einen bestimmten Betrag außermittig zu verschieben. – heltonbiker

Verwandte Themen