2012-06-04 20 views
12

Estoy diseñando una aplicación de lector de Windows 8, y tengo que usar un control para mostrar el contenido HTML, que se obtiene de algunas fuentes de sitios web. Debido a que el contenido HTML puede contener imágenes u otro texto formateado, ahora estoy usando richtextblock para mostrar el contenido HTML, pero cuesta mucho tiempo analizar el contenido HTML.Cómo manejar contenido HTML en la aplicación Metro de Windows 8

Así que me pregunto si hay algún control que pueda manejar el contenido HTML excepto el WebView.

Gracias.

Actualizado: La razón por la que no puedo usar WebView es que necesito para implementar la paginación, como la imagen belowed:

enter image description here

+0

¿Qué pasa con el control WebView? –

+0

¿No estás usando HTML para desarrollar esta aplicación? –

+0

@JP Alioto, gracias por ustedes. He actualizado mi pregunta. – ellic

Respuesta

4

Como se mencionó JP Alioto se debe utilizar el control de WebView.

Puede usar el método NavigateToString para cargar el HTML. O use Navigate para solicitar un URI.

Sin embargo, existen problemas con el uso del control WebView, específicamente se procesa de manera diferente y no es un control estándar, esto significa que su barra de aplicaciones o panel de configuración no se mostrarán en la WebView, hay una solución usando el WebViewBrush para "pintar" la Vista Web al control estándar, como un rectángulo cuando sea necesario.

+0

Gracias, Marc. He actualizado mi pregunta. – ellic

1

También puede hacer una captura de pantalla de la página web que desea mostrar. Pero hacer una captura de pantalla de una página web tampoco es fácil, pero te ofrezco hacerlo con algunos sitios especiales creados para tomar capturas de pantalla de otros sitios web. Luego puede descargar una imagen que estos sitios devuelven y abrir y mostrarla en su aplicación de Windows 8. Te muestro algunos ejemplos de cómo lo hice:

StorageFolder screens = await Windows.ApplicationModel.Package.Current.InstalledLocation.CreateFolderAsync(@"Screens\" + folderName, CreationCollisionOption.GenerateUniqueName); 
var downloader = new BackgroundDownloader(); 
IStorageFile file = await screens.CreateFileAsync(fname, CreationCollisionOption.GenerateUniqueName); 
string my_uri = "http://api.snapito.com/web/e3c351d5994134eb1aea855ce78e296c3292d48a/lc/" + url + "?type=jpeg"; 
DownloadOperation download = downloader.CreateDownload(new System.Uri(my_uri), file); 
await download.StartAsync(); 
0

Creo que sólo hay dos opciones, pero ninguno de ellos es realmente bueno:

  • Uso WebView y transformar el código HTML con CSS y otra técnicas para parecer nativo. Use ScriptNotify y NavigationStarting y otros eventos para navegar a otra página. En W8.1 WebView es mucho mejor (por ejemplo, se trata como control regular que no flota sobre todos los demás controles, ...)

  • Analice su HTML y genere elementos nativos. Inicié dicha implementación y creé un control XAML para mostrar HTML con controles nativos (consulte https://mytoolkit.codeplex.com/wikipage?title=HtmlTextBlock). Sin embargo, si tiene HTML complejo (por ejemplo, iframes, etc.), es posible que esto no funcione y no tenga otra opción que usar el control WebView.

+0

Gracias, lo revisaré ... y le responderé pronto. – Kumar

+0

Quizás tenga que cambiar el panel de elementos del FixedHtmlTextBlock ItemsControl para tener el flujo de texto Win8 correcto ... –

Cuestiones relacionadas