私はIsolatedStorageにHTMLテキストを含むいくつかのファイルを持っています。これをアプリに表示するにはどうすればよいですか?現在、このプロパティで使用WebView
していNavigateToString("html content")
ますが、UI要素を表示できないため、うまく機能しません。これに対する代替の解決策はありますか?
1 に答える
解決策は、html のレンダリングから画像を作成し、実際の の代わりにそれを表示することWebView
です。
ここから、太字の鉱山:
WebView には、コントロールなどの他の UI 領域を WebView の上にレンダリングできないという特性があります。これは、ウィンドウ領域が内部で処理される方法、特に入力イベントの処理方法と画面の描画方法が原因です。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;
}