从Azure存储下载的映像未显示

时间:2016-05-31 18:02:49

标签: azure xamarin xamarin.forms

我是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​​链接时,它似乎才起作用。有人能告诉我我做错了吗?

1 个答案:

答案 0 :(得分:0)

所以在我的公共MainPage()中,我添加了以下内容:

listView.BeginRefresh ();
listView.EndRefresh ();

我在某个时候意识到这些图片需要一些时间来下载。我假设当listView被创建时,图像没有完成下载,所以我添加了上面的代码......很确定这不是最好的方法(可能是等待会更好,但我不会&#39;知道在哪里。