Principales respuestas
Usar webbroswer para mostrar texto localizado

Pregunta
-
Buenas, me he atascado en un punto que no logro salir,
Debido a la limitación de los TextBlock, tengo que utilizar el control webbrowser para poder mostrar todo el texto, pero me ha surgido un inconveniente: Como puedo mostrar texto localizado en un HTML o XML local que se carga mediante webbrowser?
Existe alguna manera posible? o debería de dividir el texto a mostrar en 2 textblock?.
Un saludo y muchas gracias.
Alejandro Green Humphreys Nebulaphone.com
Respuestas
-
Prueba esta:
webBrowser1.NavigateToString(
"<html><head><meta name='viewport' content='width=480, user-scalable=yes' /></head><body>" + CadenaLocalizada + "</body></html>");En este caso, CadenaLocalizada es una variable de tipo string, cargada con el texto. Partiendo de que tienes las cadenas en un archivo de recursos, y tienes copias para cada lenguaje, entonces la variable CadenaLocalizada esta definida asi:
string CadenaLocalizada = Strings.textoLargo;
Si tu archivo de recursos no se llama Strings, solo reemplkazalo, y reemplaza tambien el miembro textoLargo por como se llame tu contenedor.
Si aun no te funciona, no te dire exactamente como es, pero te dire que la solucion a tu problema esta aca. Leelo completo y tendras tu solucion.
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Por otro lado, aun tengo una inquietud on eso de "Limitante de textBlock".... lee esto a ver si estoy en lo correcto en mi sospecha .
Saludos
- Marcado como respuesta Alejandro Green Humphreys martes, 24 de enero de 2012 9:51
Todas las respuestas
-
supongo que con "limitacion" te refieres a que va a solo una linea no?... si ese es el caso, te comento que no es ningun limitante, es solo el estado por defecto te la propiedad "TextWrapping". Solo tienes que establecerle esa propiedad a "Wrap" y listo, tu texto se mostrara en tantas lineas como necesites...
ojala te sirva de algo
-
Buenas, muchas gracias por tu respuesta, pero no me refería a eso. Me refiero al límite de carácteres que puede mostrar un Texblock, es por eso que debo recurrir al Webbrowser.
Saludos y muchas gracias igualmente por tu ayuda (:
Alejandro Green Humphreys Nebulaphone.com -
aaaa... isto, pense que podria ser eso.
Bueno, el control WebBorwser tiene un metodo NatigateToString(string html)
El parametro es una cadena con formato html, osea el codigo de una pagina html. Puesdes usar ese metodo y pasarle por parametro algo como string html="<html><body>" + tuTextoLocalizado + "</body></html>".
Referirse a cadenas localizadas en C#
Creo que esta vez si te servira :)
-
Exacto esto busco, pero algo debo de estar haciendo mal, porque no me funciona el Binding, este es el código como lo uso:private
void WebBrowser_OnLoaded(object sender, RoutedEventArgs e)
{
webBrowser1.NavigateToString(
"<html><head><meta name='viewport' content='width=480, user-scalable=yes' /></head><body>{Binding ActualLanguage.Versailles_LyricsFaith, Source={StaticResource Language}}</body></html>");
}me muestra la línea Binding, no la función que debería llamar, no se cual sería la manera correcta de realizarlo, muchas gracias por la ayuda :)
Alejandro Green Humphreys Nebulaphone.com
- Editado Alejandro Green Humphreys martes, 24 de enero de 2012 0:00
-
Prueba esta:
webBrowser1.NavigateToString(
"<html><head><meta name='viewport' content='width=480, user-scalable=yes' /></head><body>" + CadenaLocalizada + "</body></html>");En este caso, CadenaLocalizada es una variable de tipo string, cargada con el texto. Partiendo de que tienes las cadenas en un archivo de recursos, y tienes copias para cada lenguaje, entonces la variable CadenaLocalizada esta definida asi:
string CadenaLocalizada = Strings.textoLargo;
Si tu archivo de recursos no se llama Strings, solo reemplkazalo, y reemplaza tambien el miembro textoLargo por como se llame tu contenedor.
Si aun no te funciona, no te dire exactamente como es, pero te dire que la solucion a tu problema esta aca. Leelo completo y tendras tu solucion.
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Por otro lado, aun tengo una inquietud on eso de "Limitante de textBlock".... lee esto a ver si estoy en lo correcto en mi sospecha .
Saludos
- Marcado como respuesta Alejandro Green Humphreys martes, 24 de enero de 2012 9:51
-
Muchas gracias, me he decantado por la segunda opción que lo divide en los textblocks necesarios.
Pero ahora me surge una duda, esa limitación de 2048x2048 pixels de un textblock es para no afectar el rendimiento del móvil?. Probaré una y otra a ver cual va mejor en rendimiento.
Saludos y muchas gracias nuevamente. Todavía me falta mucho por aprender en cuanto a programación, y a ver si sigo aprendiendo mas a medida que mejoro la calidad de mis apps. (:
Alejandro Green Humphreys Nebulaphone.com -
Hola Alejandro ese problema al que te refieres con los textblock o textbox para mostrar bastante texto y que te lo divida en lineas no se soluciona con esos controles(ni poniendo un Scroll), ya que siguen los problemas cuando las lineas del texto son mas largas que la pantalla del dispositivo y necesitas hacer un scroll con tus dedos en la pantalla para seguir bajando y leer.
La mejor y sencilla solución es utilizar el control Listbox con una columna y establacer la propiedad TextWraping=Wrap asi:
<ListBox x:Name="listBox" FontSize="30" SelectionChanged="listBox_SelectionChanged" Foreground="Black" Height="464" Width="447" Margin="0" Padding="0"> <ListBox.ItemTemplate> <DataTemplate> <StackPanel Orientation="Horizontal"> <TextBlock Text="{Binding Content}" Width="450" TextWrapping="Wrap"/> </StackPanel> </DataTemplate> </ListBox.ItemTemplate> </ListBox>
El control funciona excelente. Lo que te puede pasar es que si quieres mostrar una cantidad "excesiva" de texto el control puede tardarse en cargarlo y tener problemas de rendimiento.
La ventaja de utilizar el control WebBrowser es que puedes hacer zoom con tus dedos en multitoque al texto, algo que es muy apreciado cuando se esta leyendo.
Saludos.
Felipe Villa
- Editado Andres870402 jueves, 2 de febrero de 2012 16:06