2012-06-04 25 views
12

Tôi đang thiết kế một ứng dụng Windows 8 Reader và tôi phải sử dụng điều khiển để hiển thị nội dung HTML, được lấy từ một số nguồn cấp dữ liệu trang web. Bởi vì những nội dung HTML có thể chứa hình ảnh hoặc một số văn bản được định dạng khác, bây giờ tôi đang sử dụng một richtextblock để hiển thị nội dung HTML, nhưng nó mất rất nhiều thời gian để phân tích nội dung HTML.Cách xử lý nội dung HTML trong Windows 8 Metro App

Vì vậy, tôi tự hỏi liệu có bất kỳ kiểm soát nào có thể xử lý nội dung HTML ngoại trừ WebView hay không.

Cảm ơn.

Cập nhật: Lý do tôi không thể sử dụng WebView là tôi cần phải thực hiện pagination, giống như hình ảnh belowed:

enter image description here

+0

Điều gì xảy ra với điều khiển WebView? –

+0

Vì vậy, bạn không sử dụng HTML để phát triển ứng dụng này? –

+0

@JP Alioto, cảm ơn các bạn. Tôi đã cập nhật câu hỏi của mình. – ellic

Trả lời

4

Như JP Alioto nêu bạn nên sử dụng WebView kiểm soát.

Bạn có thể sử dụng phương thức NavigateToString để tải HTML. Hoặc sử dụng Navigate để yêu cầu URI. Tuy nhiên, có một số vấn đề với việc sử dụng điều khiển WebView, cụ thể là nó được hiển thị khác và không phải là điều khiển chuẩn, điều này có nghĩa là thanh ứng dụng hoặc cửa sổ cài đặt sẽ không hiển thị trên WebView, có một giải pháp thay thế bằng sử dụng WebViewBrush để "sơn" WebView vào điều khiển chuẩn như hình chữ nhật khi cần.

+0

Xin cảm ơn, Marc. Tôi đã cập nhật câu hỏi của mình. – ellic

1

Ngoài ra, bạn có thể tạo ảnh chụp màn hình của trang web bạn muốn hiển thị. Nhưng để thực hiện một ảnh chụp màn hình của trang web nó cũng không dễ dàng để làm, nhưng tôi cung cấp cho bạn để làm cho nó với một số trang web đặc biệt mà được tạo ra để chụp màn hình của các trang web khác. Sau đó, bạn có thể tải xuống một hình ảnh mà trang web này trả lại và mở và hiển thị nó trong ứng dụng windows 8 của bạn. Tôi sẽ chỉ cho em một số ví dụ làm thế nào để tôi làm điều đó:

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

Tôi nghĩ rằng chỉ có hai lựa chọn nhưng không ai trong số đó là thực sự tốt:

  • Sử dụng WebView và chuyển đổi HTML với CSS và khác kỹ thuật để nhìn bản địa. Sử dụng ScriptNotifyNavigationStarting và các sự kiện khác để điều hướng đến một trang khác. Trong W8.1 WebView tốt hơn nhiều (ví dụ: được coi là điều khiển thông thường không trôi nổi trên tất cả các điều khiển khác, ...)

  • Phân tích cú pháp HTML của bạn và tạo thành phần gốc. Tôi bắt đầu thực hiện như vậy và tạo ra một điều khiển XAML để hiển thị HTML với các điều khiển gốc (xem https://mytoolkit.codeplex.com/wikipage?title=HtmlTextBlock). Tuy nhiên nếu bạn có HTML phức tạp (ví dụ iframe, vv) điều này có thể không hoạt động và bạn không có lựa chọn nào khác ngoài việc sử dụng điều khiển WebView.

+0

Cảm ơn, tôi sẽ trải qua nó ... và sẽ sớm trả lời bạn. – Kumar

+0

Có thể bạn phải thay đổi bảng mục của FixedHtmlTextBlock ItemsControl để có dòng văn bản Win8 chính xác ... –

Các vấn đề liên quan