Jaa


Múltiples Líneas en los Textblock de Windows Phone 7

Nivel: Básico: 100.

También surgido de otra pregunta que me hicieron en https://formspring.me/warnov, aquí una corta explicación de cómo funcionan los Texblock multilínea en WP7.

Básicamente la duda de este developer, era cómo hacía para generar un Textblock (Texto no editable que aparece como nativo en la interfaz) que presentara varios párrafos.

Lo primero que debemos garantizar, es que el TextBlock haga autoajuste de línea de acuerdo al ancho que tenga en determinado momento. Para esto ajustamos la propiedad de “ TextWrapping” en Wrap. Luego, existen varios métodos para agregar el texto que viene en párrafos.

El primero, es aprovechando la mayor flexibilidad que nos da el editor XAML para asignar textos. Como ven, sencillamente podríamos traer nuestros párrafos tal y como están por ejemplo en Word o notepad y asignarlos al control:

image

Como ven es un sencillo copy paste o escribir las líneas y darles el salto de línea donde sea pertinente.

Este copy paste también se puede ejecutar en el cuadro de propiedades:

image

Sin embargo si queremos escribir las líneas, observaremos que para darles un salto de línea el Enter no funciona. Sencillamente usamos Shift+Enter y listo. Tendremos nuestro salto de línea. Y el resultado es el esperado:

image

Obviamente, este tipo de ajuste de contenido no es posible en tiempo de ejecución, ya que no podremos copiar/pegar de ningún lado, sino indicar con una variable el contenido. Esta variable es fácil de armar con el carácter especial de cambio de línea \n:

txbInstructions.Text = "primera larga línea \n segunda \n tercera";

Esto nos da:

clip_image008

Y qué pasa si el texto está en un archivo de recursos?

En un mercado de aplicaciones como el de Windows Phone 7, es muy importante ofrecer la capacidad de multilenguaje de nuestras aplicaciones, así que es muy frecuente que nos encontremos con la necesidad de crear un archivo de recursos distinto para cada lenguaje a usar. En estos casos, cada archivo tiene los textos a usar. Entonces cómo poner valores multilínea en los archivos de recursos?

Allí también podemos copiar y pegar de otra fuente. Igual funciona el mecanismo de Shift+Enter para ingresar un salto de línea.

image

Comments

  • Anonymous
    June 29, 2012
    con esta propiedad en el TextBlock se soluciona. TextWrapping="Wrap" Saludos.

  • Anonymous
    December 13, 2012
    Gracias Juan... En efecto, esa instrucción que das, soluciona solo una parte del problema. Porque lo que se desea son multiples párrafos. No solo múltiples líneas.