2010-11-03 5 views
1

Je ne peux pas obtenir la taille désirée de mon TextBlock.Silverlight, wpf mesure problème de texte TextBlock!

J'ai quelques lignes de code:

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

     return block.DesiredSize; 

Et je ne peux pas résoudre deux problèmes avec elle:

  1. block.DesiredSize.Width est toujours zéro. Lorsque la hauteur calculée correctement.

  2. Taille souhaitée ne change quand je setters ensemble pour le style "TextStyle" Par exemple setter défini pour une valeur FontSize 50.

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

    Mais la hauteur souhaitée seulement 15! Quel problème avec cette méthode de mesure? Et comment puis-je obtenir la taille réelle du bloc de texte?

Répondre

2

Essayez cette

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

Oui, cela résout premier problème. Mais comment mesurer avec la taille de la police qui set dans setter? – Evgeny

+1

Pour résoudre le 2ème problème aussi, j'ai changé le code un peu, vérifiez à nouveau s'il vous plaît. –

+1

Rien ... La taille de la police TextBlock = 12 quand en setter j'ai 50. Et le texte mesuré pour 12. :( – Evgeny

Questions connexes