//private void ShowSharedRtf(DataPackageView shareData) //{ // //throw new NotImplementedException(); //} private async Task ShowSharedHtml(DataPackageView shareData) { DefaultViewModel["IsHtmlShared"] = true; DefaultViewModel["IsHtmlLoading"] = true; var sharedHtmlContent = await shareData.GetHtmlFormatAsync(); if (!String.IsNullOrEmpty(sharedHtmlContent)) { // Convert the shared content that contains extra header data into just the working fragment var sharedHtmlFragment = HtmlFormatHelper.GetStaticFragment(sharedHtmlContent); // Reconcile any resource-mapped image references var sharedResourceMap = await shareData.GetResourceMapAsync(); foreach (var resource in sharedResourceMap) { var mappedImageElement = String.Format("<img src={0}>", resource.Key); var replacementImageBase64 = await resource.Value.Base64EncodeContent(); var replacementImageElement = String.Format("<img src='data:image/png;base64,{0}' />", replacementImageBase64); var imageIndex = sharedHtmlFragment.IndexOf(mappedImageElement, StringComparison.Ordinal); while (imageIndex >= 0) { sharedHtmlFragment = sharedHtmlFragment.Remove(imageIndex, mappedImageElement.Length); sharedHtmlFragment = sharedHtmlFragment.Insert(imageIndex, replacementImageElement); imageIndex = sharedHtmlFragment.IndexOf(mappedImageElement, StringComparison.Ordinal); } } DefaultViewModel["IsHtmlLoading"] = false; DefaultViewModel["SharedHtml"] = sharedHtmlFragment; } }
// Note: this sample is not trying to resolve and render the HTML using resource map. // Please refer to the Clipboard JavaScript sample for an example of how to use resource map // for local images display within an HTML format. This sample will only demonstrate how to // get a resource map object and extract its key values async void DisplayResourceMapAsync(DataPackageView dataPackageView) { OutputResourceMapKeys.Text = Environment.NewLine + "Resource map: "; IReadOnlyDictionary <string, RandomAccessStreamReference> resMap = null; try { resMap = await dataPackageView.GetResourceMapAsync(); } catch (Exception ex) { rootPage.NotifyUser("Error retrieving Resource map from Clipboard: " + ex.Message, NotifyType.ErrorMessage); } if (resMap != null) { if (resMap.Count > 0) { foreach (var item in resMap) { OutputResourceMapKeys.Text += Environment.NewLine + "Key: " + item.Key; } } else { OutputResourceMapKeys.Text += Environment.NewLine + "Resource map is empty"; } } }
IAsyncOperation <IReadOnlyDictionary <string, RandomAccessStreamReference> > IDataPackageViewResolver.GetResourceMapAsync(DataPackageView dataPackageView) => dataPackageView.GetResourceMapAsync();