Ich habe eine WPF DataTemplate mit zwei TextBlock-Steuerelementen (gestapelt) und dann einige andere Elemente darunter. Aufgrund eines komplizierten Layout-Codes muss ich die Höhe der beiden TextBlock-Elemente kennen, damit ich einige ausgefallene Verbindungslinien zeichnen und andere Steuerelemente ausrichten kann.Wie messe ich die Größe eines TextBlocks in WPF, bevor es gerendert wird?
Wenn ich den Text kenne, der in die TextBlocks geht , und ich kenne die Schriftart usw. Gibt es eine Möglichkeit, die Höhe dieser TextBlocks zu berechnen oder zu messen, ohne sie tatsächlich zu rendern?
+1, aber beachten Sie, dass neben der üblichen Schriftart und Schriftgröße auch eine (geerbte) angefügte Eigenschaft vorhanden ist, die sich auf [font font] bezieht (http://blogs.msdn.com/b/text /archive/2009/08/24/wpf-4-0-text-stack-improvements.aspx) (ob auf ganze Pixel ausgerichtet werden soll oder nicht), und dies wirkt sich auf die Breite des Textes aus. Die angefügte Eigenschaft ist 'TextOptions.FormattingMode' - stellen Sie sicher, dass der Wert dieser Eigenschaft für das Objekt, das Sie messen, mit dem Wert für das Objekt übereinstimmt, das Sie rendern (wenn sie nicht identisch sind). – Cameron
hatte gerade das gleiche Problem und rief nur 'textblock.Measure (new Size());' nicht genug. Ich musste 'textblock.Measure (new Size (double.PositiveInfinity, double.PositiveInfinity));' verwenden, um ein Ergebnis für 'textblock.DesiredSize' zu erhalten. – metacircle
Denken Sie daran, dass' MinWidth' auf 0 und 'MaxWidth auf 0 gesetzt werden muss 'vor der Messung auf PositiveInfinity gesetzt, ansonsten wird sie durch diese Werte begrenzt. – zmechanic