如何在Windows 8 Metro应用程序中处理HTML内容

如何在Windows 8 Metro应用程序中处理HTML内容,html,windows-8,microsoft-metro,Html,Windows 8,Microsoft Metro,我正在设计一个Windows8阅读器应用程序,我必须使用一个控件来显示HTML内容,这些内容是从一些网站提要获取的。由于这些HTML内容可能包含图像或其他格式化文本,现在我使用richtextblock来显示HTML内容,但解析HTML内容需要花费大量时间 所以我想知道除了WebView之外,是否还有其他控件可以处理HTML内容 谢谢 更新: 我无法使用WebView的原因是我需要实现分页,如下图所示: 正如JP Alioto提到的,您应该使用该控件 您可以使用该方法加载HTML。或用于请求UR

我正在设计一个Windows8阅读器应用程序,我必须使用一个控件来显示HTML内容,这些内容是从一些网站提要获取的。由于这些HTML内容可能包含图像或其他格式化文本,现在我使用richtextblock来显示HTML内容,但解析HTML内容需要花费大量时间

所以我想知道除了WebView之外,是否还有其他控件可以处理HTML内容

谢谢

更新: 我无法使用WebView的原因是我需要实现分页,如下图所示:


正如JP Alioto提到的,您应该使用该控件

您可以使用该方法加载HTML。或用于请求URI


但是,使用WebView控件时存在一些问题,特别是它的呈现方式不同,并且不是标准控件,这意味着应用程序栏或设置窗格等内容将不会在WebView顶部呈现,有一种解决方法,可以在需要时使用将WebView“绘制”为标准控件,如矩形

您还可以制作要显示的网页的屏幕截图。但要制作网页截图也不容易,但我建议你制作一些特殊的网站,这些网站是为拍摄其他网站的截图而创建的。然后,您可以下载此网站返回的图像,打开并在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();

我认为只有两个选择,但没有一个是真正好的:

  • 使用WebView并使用CSS和其他技术转换HTML,使其看起来像本地的。使用
    ScriptNotify
    NavigationStarting
    以及其他事件导航到其他页面。在W8.1中,WebView要好得多(例如,被视为常规控件,而不是浮动在所有其他控件之上,…)

  • 解析HTML并生成本机元素。我启动了这样一个实现,并创建了一个XAML控件来显示带有本机控件的HTML(请参阅)。但是,如果您有复杂的HTML(例如iFrame等),这可能不起作用,您除了使用WebView控件之外别无选择


WebView控件有什么问题?所以您没有使用HTML来开发此应用程序?@JP Alioto,谢谢大家。我已经更新了我的问题。谢谢,我会检查一下…&请尽快与您联系。也许您必须更改FixedHtmlTextBlock items控件的“项目”面板以获得正确的Win8文本流。。。