5

Nel mio progetto Xamarin portatile condiviso, questo funziona su UWP, Windows Phone 8.1 e Windows 8.1:Webview BaseURL in Xamarin.Forms su UWP e Windows Phone 8.1

HtmlWebViewSource htmlSource = new HtmlWebViewSource(); 
htmlSource.Html = @"<html><body><img src='ms-appx-web:///Assets/somePicture.png' /></body></html>"; 
htmlSource.BaseUrl = DependencyService.Get<IBaseUrl>().Get(); 
WebView webView = new WebView 
{ 
     Source = htmlSource, 
}; 

Ovviamente, questo non è cross -piattaforma (iOS e Android). Voglio che questo, ma non funziona su UWP, Windows Phone 8.1 e Windows 8.1:

HtmlWebViewSource htmlSource = new HtmlWebViewSource(); 
htmlSource.Html = @"<html><body><img src='somePicture.png' /></body></html>"; 
htmlSource.BaseUrl = DependencyService.Get<IBaseUrl>().Get(); 
WebView webView = new WebView 
{ 
     Source = htmlSource, 
}; 

IBaseUrl: implementazione

public interface IBaseUrl { string Get(); } 

baseurl per UWP, Windows Phone 8.1 e Windows 8.1, tratto da un Windows Phone 8.0 sample project:

[assembly: Dependency(typeof(MyApp.UWP.BaseUrl))] 
namespace MyApp.UWP 
{ 
    public class BaseUrl : IBaseUrl 
    { 
     public string Get() 
     { 
      return ""; // "ms-appx-web:///Assets/" doesn't work 
     } 
    } 
} 

ho provato diverse varianti di ritorno baseurl di "ms-appx-web: /// Assets /", "MS-appx-web: ///", mettendo i file in la radice del progetto o in "As imposta "dir, niente funziona.

Per quanto posso dire, questo funzionava su Windows Phone 8.0.

risposta

3

Che dire di Device.OnPlatform?

var urlIos = @"somePicture.png"; 
var urlAndroid = @"somePicture.png"; 
var urlUWP = @"ms-appx-web:///Assets/somePicture.png"; 
htmlSource.Html = string.Format(@"<html><body><img src='{0}' /></body></html>", Device.OnPlatform(urlIos, urlAndroid, urlUWP)); 
+0

Questo potrebbe funzionare, ma dovrebbe essere eseguito per ogni singolo URL, che non mi sembra la soluzione migliore –

+1

Hmm, I vedi il tuo problema Non riesco a capire BaseUrl con UWP. Ma che dire di Regex.Replace? Questo potrebbe funzionare. – Matt

+0

Sto lavorando su Xamarin cross platform project dove, se metto le immagini all'interno della sottocartella, non si carica sullo schermo. "ms-appx: ///Assets/abc.png" – Ashaar

Problemi correlati