2

我在 IsolatedStorage 中有一些带有 HTML 文本的文件。我怎样才能在应用程序中显示这个?我目前正在使用WebView它的NavigateToString("html content")属性,但它不能很好地工作,就像我无法在它上面显示任何 UI 元素一样。有没有其他解决方案?

4

1 回答 1

3

看来解决方案是从 html 的呈现中创建图像并显示它而不是实际的WebView.

这里,大胆地挖掘:

WebView 具有不能在 WebView 之上渲染其他 UI 区域(例如控件)的特点。这是因为窗口区域是如何在内部处理的,特别是如何处理输入事件以及如何绘制屏幕。如果你想渲染 HTML 内容并且在 HTML 内容之上放置其他 UI 元素,你应该使用WebViewBrush作为渲染区域。WebView 仍然提供 HTML 源信息,您可以通过元素名称绑定和SourceName属性引用该 WebView。WebViewBrush 没有此覆盖限制。

如果要显示一个仅偶尔有重叠内容的交互式 WebView(例如下拉列表或应用栏),可以在必要时暂时隐藏 WebView 控件,将其替换为使用WebViewBrush填充的元素。然后,当重叠内容不再存在时,您可以再次显示原始 WebView。有关详细信息,请参阅WebView 控件示例。

示例代码在这里找到:

//create webview and rectangle
<WebView x:Name="WebView6" /> 
<Rectangle x:Name="Rect1"/> 

//put content in the webview
protected override void OnNavigatedTo(NavigationEventArgs e) 
{ 

    // Ensure that our Rectangle used to simulate the WebView is not shown initially 
    Rect1.Visibility = Windows.UI.Xaml.Visibility.Collapsed; 

    WebView6.Navigate(new Uri("http://www.bing.com")); 
}

//make the rectangle visible when you want something over the top of the web content
Rect1.Visibility = Windows.UI.Xaml.Visibility.Visible;

//if the rectangle is visible, then hit the webview and put the content in the webviewbrush
if (Rect1.Visibility == Windows.UI.Xaml.Visibility.Visible) 
{ 
    WebViewBrush b = new WebViewBrush(); 
    b.SourceName = "WebView6"; 
    b.Redraw(); 
    Rect1.Fill = b; 
    WebView6.Visibility = Windows.UI.Xaml.Visibility.Collapsed; 
} 
于 2012-09-19T21:23:09.670 回答