2010-09-26 11 views
6

he un bloque de texto que debeWPF Textblock zoom y envuelvo

  1. espectáculo de texto en el tamaño de fuente máximo posible dentro del espacio determinado (menos los caracteres más grandes letras y viceversa)
  2. envolver el texto dentro de el espacio dado

He intentado utilizar un cuadro de texto dentro de una caja de vista como la siguiente, pero el ajuste de texto no funciona si no especifico el ancho y la altura del bloque de texto. Si especifico el ancho y la altura del mismo tamaño que la vista, obviamente el zoom no ocurre.

<Viewbox Stretch="Fill" Width="100" Height="100"> 
<TextBlock TextWrapping="Wrap"/> 
</Viewbox> 

¿Hay alguna otra manera de conseguir esto? ¿O debería pensar en escribir un algoritmo para aumentar el tamaño de letra manualmente en función de la cantidad de texto? Se agradece cualquier ayuda.

+0

que podría hacer manualmente el salto de línea controla el evento PreviewKeyDown o PreviewKeyUp y comprobar si se ha alcanzado el límite de longitud del texto. Otra forma de lograr el mismo resultado: crear un convertidor personalizado y hacer el salto de línea allí. Puede pasar un parámetro o usar un campo para especificar MaxLength. – 0xbadf00d

Respuesta

0

Pruebe este código.

XAML:

<TextBlock x:Name="textBlock" 
      Text="Something text" 
      TextWrapping="Wrap" 
      FontSize="1" 
      Width="100" 
      Opacity="0" /> 

Código atrás:

while (textBlock.ActualHeight <= 100) 
{ 
    textBlock.FontSize += 0.1; 
    textBlock.UpdateLayout(); 
} 
textBlock.FontSize -= 0.1; 
textBlock.Opacity = 1; 
Cuestiones relacionadas