Ho un DataTemplate WPF con due controlli TextBlock (impilati) e quindi alcuni altri elementi al di sotto. A causa di un complicato codice di layout, ho bisogno di conoscere l'altezza dei due elementi TextBlock in modo da poter disegnare alcune linee di connettori fantasiose e allineare altri controlli, ecc.Come si misura la dimensione di un TextBlock in WPF prima del rendering?
Se conosco il testo che sta andando in TextBlocks e conosco il font, ecc., c'è un modo in cui posso calcolare o misurare l'altezza di questi TextBlock senza renderli effettivamente?
+1, ma si noti che, oltre al consueto aspetto e la dimensione del font, c'è anche un (ereditato) Proprietà divisoria che [colpisce carattere hinting] (http://blogs.msdn.com/b/text /archive/2009/08/24/wpf-4-0-text-stack-improvements.aspx) (se allineare o meno pixel interi), e questo influenza la larghezza del testo. La proprietà allegata è 'TextOptions.FormattingMode' - assicurati che il valore di questa proprietà sull'oggetto che stai misurando corrisponda al valore dell'oggetto che stai rendendo (se non sono uguali). – Cameron
Ho appena avuto lo stesso problema e ho appena chiamato 'textblock.Measure (new Size());' non basta. Ho dovuto usare 'textblock.Measure (new Size (double.PositiveInfinity, double.PositiveInfinity));' per ottenere un risultato per 'textblock.DesiredSize' – metacircle
Ricorda che' MinWidth' deve essere impostato su 0 e 'MaxWidth 'impostato su PositiveInfinity prima della misurazione, altrimenti verrà limitato da tali valori. – zmechanic