MvvmCross.Plugins.File:MvxImageView中不显示已下载和本地存储的图像

时间:2014-05-28 12:57:45

标签: xamarin mvvmcross

我像这样从互联网上保存图像:

public void SetSelectedConsultant(string consultantId)
{
    // ...

    var path = this.fileStore.PathCombine(App.IMAGES_FOLDER, App.SELECTED_CONSULTANT_IMAGE_FILENAME);

    if (this.fileStore.Exists(path))
    {
        this.fileStore.DeleteFile(path);
    }

    this.fileStore.EnsureFolderExists(App.IMAGES_FOLDER);

    this.GeneralAsyncLoad(
        App.SERVER_URL + App.CONSULTANT_FILE_NAME,
        stream =>
            {
                this.SaveConsultantImage(stream, path);
                this.mvxMessenger.Publish(new ConsultantUpdatedMessage(this));
            });
}

private void SaveConsultantImage(Stream stream, string path)
{
    var memoryStream = new MemoryStream();
    stream.CopyTo(memoryStream);
    byte[] pictureBytes = memoryStream.ToArray();

    this.fileStore.WriteFile(path, pictureBytes);
}

ConsultantUpdatedMessage被我的视图模型捕获,它将为ConsultantImageUrl提升RaisePropertyChanged。我的其他属性如ConsultantName等在视图中正确刷新,但图像拒绝显示在控件中:

<Mvx.MvxImageView
    android:scaleType="fitXY"
    android:layout_margin="5dp"
    android:layout_width="220dp"
    android:layout_height="wrap_content"
    local:MvxBind="ImageUrl ConsultantImageUrl" />

我检查文件是否存在,使用fileStore.Exists,结果为&#34; true&#34;,但文件不会显示。我有可能以错误的方式保存图片吗?

编辑:作为操作方法,我使用了本教程(https://github.com/MvvmCross/NPlus1DaysOfMvvmCross/tree/master/N-16-CollectABull-Part5)。但是,他们使用本地相册中的照片而不是下载一张。

1 个答案:

答案 0 :(得分:1)

我发现了问题。网址错误,它下载了另一个(无图像)文件并保存。因此,文件存在,但无法在视图中显示,因为它不是图像。