Mam WPF DataTemplate z dwoma kontrolkami TextBlock (ułożone), a następnie niektóre inne elementy pod spodem. Z powodu skomplikowanego kodu układu, muszę znać wysokość dwóch elementów TextBlock, tak aby móc narysować kilka fantazyjnych linii łączących i wyrównać inne kontrolki itp.Jak zmierzyć rozmiar obiektu TextBlock w WPF przed renderowaniem?
Jeśli znam tekst, który trafia do TextBlocks i znam czcionkę itp., czy w jakiś sposób mogę obliczyć lub zmierzyć wysokość tych bloków TextBlock bez ich renderowania?
+1, należy jednak pamiętać, że w dodatku do zwykłych wyglądzie i rozmiarem czcionki, nie jest również (dziedziczone) przymocowany Właściwość [wpływa hinting] (http://blogs.msdn.com/b/text /archive/2009/08/24/wpf-4-0-text-stack-improvements.aspx) (czy wyrównać do całych pikseli czy nie), a to wpływa na szerokość tekstu. Załączona właściwość to 'TextOptions.FormattingMode' - upewnij się, że wartość tej właściwości na mierzonym obiekcie jest zgodna z wartością renderowanego obiektu (jeśli nie są one takie same). – Cameron
Po prostu miałem ten sam problem i po prostu wywoływanie 'textblock.Measure (new Size());' aint enough. Musiałem użyć 'textblock.Measure (nowy rozmiar (double.PositiveInfinity, double.PositiveInfinity));' aby uzyskać wynik dla 'textblock.DesiredSize' – metacircle
Pamiętaj, że' MinWidth' musi być ustawiony na 0, a 'MaxWidth 'przed pomiarem ustaw wartość PositiveInfinity, w przeciwnym razie będzie ona ograniczona tymi wartościami. – zmechanic