我正在设计一个Windows 8 阅读应用程序,必须使用控件来显示从某些网站提取的HTML内容。由于这些HTML内容可能包含图像或其他格式化文本,所以我现在正在使用“richtextblock”来显示HTML内容,但解析HTML内容需要很多时间。
因此,我想知道是否有任何控件可以处理HTML内容,除了WebView?
谢谢。
更新: 我不能使用WebView是因为我需要实现分页,就像下面的图片:
我正在设计一个Windows 8 阅读应用程序,必须使用控件来显示从某些网站提取的HTML内容。由于这些HTML内容可能包含图像或其他格式化文本,所以我现在正在使用“richtextblock”来显示HTML内容,但解析HTML内容需要很多时间。
因此,我想知道是否有任何控件可以处理HTML内容,除了WebView?
谢谢。
更新: 我不能使用WebView是因为我需要实现分页,就像下面的图片:
正如JP Alioto提到的,您应该使用WebView控件。
您可以使用NavigateToString方法加载HTML。或者使用Navigate请求URI。
然而,使用WebView控件存在问题,特别是它呈现方式不同,并且不是标准控件,这意味着您的应用栏或设置窗格不会在WebView顶部呈现,通过使用WebViewBrush进行解决,将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(请参见https://mytoolkit.codeplex.com/wikipage?title=HtmlTextBlock)。但是,如果您有复杂的HTML(例如iframe等),这可能无法正常工作,并且您别无选择,只能使用WebView控件。