Подтвердить что ты не робот

Как обрабатывать содержимое HTML в приложении Windows 8 Metro

Я разрабатываю приложение для чтения Windows 8, и я должен использовать элемент управления для отображения содержимого HTML, которое извлекается из некоторых фидов веб-сайтов. Потому что эти HTML-содержимое может содержать изображения или какой-либо другой форматированный текст, теперь я использую richtextblock для отображения содержимого HTML, но это занимает много времени, чтобы проанализировать содержимое HTML.

Поэтому мне интересно, есть ли какие-либо элементы управления, которые могут обрабатывать содержимое HTML, кроме WebView.

Спасибо.

Обновлено: Причина, по которой я не могу использовать WebView, заключается в том, что мне нужно реализовать разбиение на страницы, например изображение ниже:

enter image description here

4b9b3361

Ответ 1

Как отметил Дж. Алиото, вы должны использовать WebView.

Вы можете использовать метод NavigateToString для загрузки HTML. Или используйте Navigate, чтобы запросить URI.

Однако существуют проблемы с использованием элемента управления WebView, в частности, он отображается по-разному и не является стандартным элементом управления, это означает, что такие вещи, как панель приложений или панель настроек, не будут отображаться поверх WebView, существует обходное решение, используя WebViewBrush, чтобы "нарисовать" WebView для стандартного управления, например прямоугольника, когда это необходимо.

Ответ 2

Также вы можете сделать снимок экрана веб-страницы, которую вы хотите отобразить. Но сделать скриншот веб-страницы тоже непросто сделать, но я предлагаю вам сделать это с помощью некоторых специальных сайтов, которые создаются для скриншотов других веб-сайтов. Затем вы можете загрузить изображение, на котором эти сайты возвращаются и открываются и отображаются в вашем приложении Windows 8. Я покажу вам пример, как это сделать:

 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();

Ответ 3

Я думаю, что есть только два варианта, но ни один из них не очень хорош:

  • Используйте WebView и преобразуйте свой HTML с помощью CSS и других методов, чтобы выглядеть родным. Используйте кнопки ScriptNotify и NavigationStarting и другие события для перехода на другую страницу. В W8.1 WebView намного лучше (например, рассматривается как регулярный контроль, не плавающий над всеми другими элементами управления,...)

  • Разберите свой HTML-код и создайте собственные элементы. Я начал такую ​​реализацию и создал элемент управления XAML для отображения HTML с помощью собственных элементов управления (см. https://mytoolkit.codeplex.com/wikipage?title=HtmlTextBlock). Однако, если у вас сложный HTML (например, iframe и т.д.), Это может не сработать, и у вас нет другого выбора, кроме как использовать элемент управления WebView.