UWP和Windows Phone 8.1上Xamarin.Forms中的Webview BaseURL

UWP和Windows Phone 8.1上Xamarin.Forms中的Webview BaseURL,xamarin,windows-phone-8.1,win-universal-app,xamarin.forms,windows-10-universal,Xamarin,Windows Phone 8.1,Win Universal App,Xamarin.forms,Windows 10 Universal,在我的共享便携式Xamarin项目中,它在UWP、Windows Phone 8.1和Windows 8.1上工作: HtmlWebViewSource htmlSource=新的HtmlWebViewSource(); Html=@; htmlSource.BaseUrl=DependencyService.Get().Get(); WebView WebView=新建WebView { Source=htmlSource, }; 显然,这不是跨平台的(iOS和Android)。我想要这个,

在我的共享便携式Xamarin项目中,它在UWP、Windows Phone 8.1和Windows 8.1上工作:

HtmlWebViewSource htmlSource=新的HtmlWebViewSource();
Html=@;
htmlSource.BaseUrl=DependencyService.Get().Get();
WebView WebView=新建WebView
{
Source=htmlSource,
};
显然,这不是跨平台的(iOS和Android)。我想要这个,但它在UWP、Windows Phone 8.1和Windows 8.1上不起作用:

HtmlWebViewSource htmlSource=新的HtmlWebViewSource();
Html=@;
htmlSource.BaseUrl=DependencyService.Get().Get();
WebView WebView=新建WebView
{
Source=htmlSource,
};
IBaseUrl:

public接口IBaseUrl{string Get();}
UWP、Windows Phone 8.1和Windows 8.1的BaseUrl实现,取自:

[程序集:依赖项(typeof(MyApp.UWP.BaseUrl))]
名称空间MyApp.UWP
{
公共类BaseUrl:IBaseUrl
{
公共字符串Get()
{
返回“;/”ms-appx-web:///Assets/“不行
}
}
}
我尝试了返回“ms appx”的BaseUrl的不同变体-web:///Assets/“,”ms appx web://“,将文件放在项目根目录或“资产”目录中,任何操作都无效


据我所知,这在Windows Phone 8.0上可以正常工作。

那么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));
var urlIos=@“somePicture.png”;
var urlAndroid=@“somePicture.png”;
var urlUWP=@“ms appx-web:///Assets/somePicture.png";
Html=string.Format(@“”,Device.OnPlatform(urlIos,urlAndroid,urlUWP));

从Xamarin Forms 2.3.1开始,WebViewRenderer for Windows RT只会忽略BaseUrl()。但是,在2.3.2分支上有一个修复方法:

这可能会起作用,但必须针对每个URL进行修复,我认为这不是最好的解决方案嗯,我看到了您的问题。我无法用UWP计算BaseUrl。但是Regex呢,替换?这可能行得通。我正在从事Xamarin跨平台项目,如果我将图像放在子文件夹中,它不会加载到屏幕上。“小姐-appx:///Assets/abc.png"