2016-03-22 19 views
1

Ich versuche, die gerenderte Position der Ecken eines Textblocks zu erhalten. Ich kann nicht herausfinden, wie es geht. Der Textblock ist an eine Umrandung gebunden, die wiederum durch ein Gitter gebunden ist. Daher haben der Textblock und der Rahmen keine Dimensionen, die ich in Bezug auf den Rest des Fensters ziehen kann. Ich habe den folgenden Code ausprobiert, aber nur ein Teil davon funktioniert. Der Rand ist 0 und die tatsächliche Breite ist 13,2. Zu dem Zeitpunkt, zu dem diese Zeile erreicht wurde, wurden das Fenster und die Textblöcke gerendert.Wie berechne ich die gerenderte Position der Ecken eines Textblocks?

double rightBound = textBlock.Margin.Left + textBlock.ActualWidth; 

Update: ich den folgenden Code haben, die meistens tut, was ich will. Die Punkte stimmen jedoch NICHT gut mit den UI-Elementen überein. sie scheinen willkürlich in der Nähe der Elemente angeordnet zu sein. Die Punkte stimmen nicht mit den Grenzen des Blocks überein.

Point blockPoint = textBlock.TranslatePoint(new Point(0, 0), myMainWindow); 
+0

In welcher Methode ist diese Zeile? hat das Fenster tatsächlich an dieser Stelle gezeichnet? – Andy

+0

Das Fenster wurde genauso wie die Textblöcke gerendert. – Sean

+2

Sie können die Methode [TranslatePoint] (https://msdn.microsoft.com/en-us/library/system.windows.uielement.translatepoint (v = vs.110) .aspx) verwenden, um die relative Position zu einer beliebigen Position zu ermitteln anderes Element. – Clemens

Antwort

1

So Ihr Textfeld nicht so dimensioniert ist, und wird durch eine Grenze verkapselt ... Der Code, den Sie oben gab möglicherweise die Position des Textes innerhalb der Grenze werden greifen, so wie die Linien erscheinen zufällig innen gezogen werden das Element. Versuchen Sie, die Position der Einkapselungsleiste zu erfassen.

+0

Ja, das funktioniert! Vielen Dank! Aber warum funktioniert es? – Sean

+0

Meine Vermutung ist, dass, weil Ihr Textfeld bei der Erstellung keine Größe hat, jedes Mal, wenn Sie den Text ändern, das Textfeld und nicht der Rahmen die Größe ändert. Dies bedeutet, dass der Punkt irgendwo innerhalb der Grenze liegt (wie du es beschreibst). – Ben

Verwandte Themen