2012-06-04 12 views
12

Sto progettando un'applicazione di lettura di Windows 8 e devo utilizzare un controllo per mostrare il contenuto HTML, che viene recuperato da alcuni feed di siti web. Perché quei contenuti HTML potrebbero contenere immagini o qualche altro testo formattato, ora sto usando un richtextblock per mostrare il contenuto HTML, ma costa molto tempo per analizzare il contenuto HTML.Come gestire il contenuto HTML nell'app di Windows 8 Metro

Quindi mi chiedo se non ci sono controlli in grado di gestire il contenuto HTML tranne la WebView.

Grazie.

Aggiornato: Il motivo per cui non posso usare WebView è che ho bisogno di implementare l'impaginazione, come l'immagine belowed:

enter image description here

+0

Cosa c'è di sbagliato nel controllo WebView? –

+0

Quindi non stai usando HTML per sviluppare questa app? –

+0

@ JP Alioto, grazie per voi ragazzi. Ho aggiornato la mia domanda. – ellic

risposta

4

Come JP Alioto accennato si dovrebbe utilizzare il controllo WebView.

È possibile utilizzare il metodo NavigateToString per caricare l'HTML. Oppure utilizzare Navigate per richiedere un URI.

Ci sono comunque problemi nell'utilizzo del controllo WebView, in particolare è reso in modo diverso e non è un controllo standard, questo significa che la barra delle applicazioni o il pannello delle impostazioni non renderanno il rendering sulla parte superiore di WebView, c'è una soluzione da usando WebViewBrush per "dipingere" la WebView al controllo standard come un rettangolo quando necessario.

+0

Grazie, Marc. Ho aggiornato la mia domanda. – ellic

1

Inoltre è possibile creare uno screenshot della pagina Web che si desidera visualizzare. Ma fare uno screenshot della pagina web non è nemmeno facile da fare, ma ti offro di farlo con alcuni siti speciali creati per scattare screenshot di altri siti web. Quindi puoi scaricare un'immagine che i siti restituiscono e aprire e visualizzarla nell'app di Windows 8. Vi mostro alcuni esempi di come ho fatto:

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

Penso che ci sono solo due opzioni, ma nessuno di loro sono veramente buoni:

  • Usa WebView e trasformare il vostro HTML con CSS e altri tecniche per sembrare native. Utilizzare ScriptNotify e NavigationStarting e altri eventi per spostarsi su un'altra pagina. In W8.1 la WebView è molto meglio (ad esempio, trattata come controllo regolare non mobile su tutti gli altri controlli, ...)

  • Analizza il tuo HTML e genera elementi nativi. Ho iniziato un'implementazione del genere e ho creato un controllo XAML per visualizzare l'HTML con i controlli nativi (vedere https://mytoolkit.codeplex.com/wikipage?title=HtmlTextBlock). Tuttavia, se si dispone di HTML complesso (ad es. Iframe, ecc.), Questo potrebbe non funzionare e non si ha altra scelta che utilizzare il controllo WebView.

+0

Grazie, lo esaminerò ... e ti ricontatteremo presto. – Kumar

+0

Forse dovresti cambiare il pannello delle voci di FixedHtmlTextBlock ItemsControl per avere il flusso di testo Win8 corretto ... –

Problemi correlati