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);
In welcher Methode ist diese Zeile? hat das Fenster tatsächlich an dieser Stelle gezeichnet? – Andy
Das Fenster wurde genauso wie die Textblöcke gerendert. – Sean
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