以下是我当前加载图片的代码:


 System.Uri uri;
 System.Uri.TryCreate(imageURI,UriKind。绝对,out uri);
 _companyImage.Source = ImageSource.FromUri(uri);



 问题在于整体程序必须等待这个任务完成,我想异步加载图像,但我无法弄清楚如何异步创建图像源。

答案 0 :(得分:5)
异步获取数据并在完成后将其分配给您的源。
System.Uri uri;
System.Uri.TryCreate(imageURI, UriKind.Absolute, out uri);
Task<ImageSource> result = Task<ImageSource>.Factory.StartNew(() => ImageSource.FromUri(uri));
_companyImage.Source = await result;
答案 1 :(得分:3)
您只需将Image.Source
属性设置为URI,然后让Xamarin.Forms为您完成工作(按"Working with Images" in Xamarin.Forms docs)。
var someImage = new Image() {
Aspect = Aspect.AspectFit,
Source = ImageSource.FromUri(new Uri("http://xamarin.com/content/images/pages/branding/assets/xamagon.png")),
};
答案 2 :(得分:0)
将您的网址设置为Source proprty或从viewmodel
绑定https://developer.xamarin.com/guides/xamarin-forms/user-interface/images/
<Image Source="yoururl" Aspect="AspectFill" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand"/>
答案 3 :(得分:0)
在特殊情况下,您尝试在Android上使用ContentUri(例如content://com.android.contacts/contacts/18/photo
),这是必需的咒语:
var uri = Android.Net.Uri.Parse(str);
_companyImage.Source = ImageSource.FromStream(() => Android.App.Application.Context.ContentResolver.OpenInputStream(uri));