在 UWP Web 视图控件中显示资源映射图像



在此链接中

它向我们展示了如何使用ResourceMap共享带有文本和图像内容的HTML。

但是相应的文章没有向我们展示如何阅读它并将其正确放入网络视图中。

我知道如何取回资源地图,但我不知道如何最好地将其放入WebView中。

this.sharedResourceMap = await this.shareOperation.Data.GetResourceMapAsync();
foreach (KeyValuePair<string, RandomAccessStreamReference> item in this.sharedResourceMap)
{
    ResourceMapValue.Text += "nKey: " + item.Key;
}

Item.Key会像ms-appx:///Assets/Logo.png

您应该利用类IUriToStreamResolver

在下面的示例中,我加载位于Assets文件夹中的 HTML 文件(示例.html(。Assets文件夹还包含 HTML 文件的所有图像。应重写GetContent IUriToStreamResolver 方法,以将对 HTML 文件中指定的 URI(例如 (的任何请求转换为本地 uri 路径。在您的情况下,您可能需要调整GetContent以便检索资源映射存储的文件。

public sealed partial class WebViewLocalImage : Page
{
    public WebViewLocalImage()
    {
        this.InitializeComponent();
        Loaded += MainPage_Loaded;
    }
    private void MainPage_Loaded(object sender, RoutedEventArgs e)
    {
        var uri = this.myWebView.BuildLocalStreamUri("InternalAssets", "example.html");
        this.myWebView.NavigateToLocalStreamUri(uri, new StreamUriResolver());
    }
}
public sealed class StreamUriResolver : IUriToStreamResolver
{
    public IAsyncOperation<IInputStream> UriToStreamAsync(Uri uri)
    {
        string path = uri.AbsolutePath;
        return GetContent(path).AsAsyncOperation();
    }
    private async Task<IInputStream> GetContent(string URIPath)
    {
        try
        {
            Uri localUri = new Uri("ms-appx:///Assets/" + URIPath);
            StorageFile f = await StorageFile.GetFileFromApplicationUriAsync(localUri);
            IRandomAccessStream stream = await f.OpenAsync(FileAccessMode.Read);
            return stream.GetInputStreamAt(0);
        }
        catch (Exception)
        {
            System.Diagnostics.Debug.WriteLine("Invalid URI");
        }
        return null;
    }
}

相关内容

  • 没有找到相关文章

最新更新