2010-11-03 3 views
1

Я не могу получить нужный размер моего TextBlock.Silverlight, wpf measure TextBlock text problem!

У меня есть несколько строк кода:

TextBlock block = new TextBlock(); 
     block.Style = this.TextStyle; 
     block.UpdateLayout(); 
     block.Measure(new Size(this.ActualWidth, this.ActualHeight)); 
     block.Text = "3333"; 

     return block.DesiredSize; 

И я не могу решить две проблемы, связанные с ним:

  1. block.DesiredSize.Width всегда нулю. Когда высота вычисляется должным образом.

  2. Желаемой размер не меняется, когда я установить сеттер для стиля «TextStyle» Например, сеттер набор для FontSize со значением 50.

     <Setter Property="FontSize" 
          Value="50"> 
        </Setter> 
    

    Но желаемой высотой всего 15! Что не так с этим методом измерения? И как я могу получить реальный размер текстового блока?

ответ

2

Попробуйте

TextBlock block = new TextBlock(); 
    block.Text = "3333"; 
    block.Style = this.TextStyle; 

    block.Measure(new Size(this.ActualWidth, this.ActualHeight)); 
    block.UpdateLayout(); 


    return block.DesiredSize; 
+1

Да, это решает первую проблему. Но как измерять размер шрифта, который установлен в сеттер? – Evgeny

+1

Чтобы решить вторую проблему, я немного изменил код, повторите попытку, пожалуйста. – 2010-11-04 00:02:40

+1

Ничего ... Размер шрифта TextBlock = 12, когда в setter у меня есть 50. И текст, измеренный для 12. :( – Evgeny