我是Xamarin的新手。我正在尝试显示已下载图像的列表。我正在从Azure上的APP API下载图像,我将文件存储在Azure存储上。
我的服务器代码如下:
public HttpResponseMessage Get(string PK, string RK)
{
//Creating CloudBlockBlolb...
byte[] bytes = new byte[blockBlob.Properties.Length]
for(int i = 0; i < blockBlob.Properties.Length; i++){
bytes[i] = 0x20;
}
blockBlob.DownloadToByteArray(bytes, 0);
HttpResponseMessage resp = new HttpResponseMessage(HttpStatusCode.OK);
resp.Content = new ByteArrayContent(bytes);
resp.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("image/jpg");
return resp;
}
我的Xamarin代码如下:
public MainPage ()
{
//...
List<PicturePost> list = new List<PicturePost>{
new PicturePost("title", "subtitle", "link/api/Pictures?PK=xxx&RK=yyy")
};
InitializeComponent ();
listView.ItemTemplate = new DataTemplate (typeof(CustomImageCell));
listView.HasUnevenRows = true;
listView.ItemsSource = list;
//...
}
以下是CustomImageCell的相关代码:
var image = new Image ();
image.SetBinding (Image.SourceProperty, "image");
//...
horizontalLayout.Children.Add (image);
我知道我的API调用有效,因为当我在浏览器上测试它时,它会返回图像。我也知道,如果我使用任何随机链接,例如http://www.natureasia.com/common/img/splash/thailand.jpg,图像将被正确下载和显示。只有当我使用API链接时,它似乎才起作用。有人能告诉我我做错了吗?
答案 0 :(得分:0)
所以在我的公共MainPage()中,我添加了以下内容:
listView.BeginRefresh ();
listView.EndRefresh ();
我在某个时候意识到这些图片需要一些时间来下载。我假设当listView被创建时,图像没有完成下载,所以我添加了上面的代码......很确定这不是最好的方法(可能是等待会更好,但我不会&#39;知道在哪里。