Xamarin.Forms是否使用FFImageLoading刷新图像URI?

时间:2018-12-15 05:18:09

标签: android ios xaml xamarin.forms ffimageloading

在我的应用中,我有一个按钮和一个图像。我单击按钮,它会加载设备的照片选择器,然后在选择时将图像源设置为所选图像。

如果我直接使用(ImageName).Source =“(Source)”通过代码设置图像,此方法就可以正常工作。

相反,我正在做的是发送该图像并将其存储在Azure存储中,并使用该图像的UR作为图像源的绑定。效果很好。

但是,当我发送图像时遇到的问题是,我希望它更新图像源而不必在代码中进行设置。我希望通过视图模型绑定来完成。

这是因为应用程序的某些部分也使用此URI,因此,当我更新Azure存储中的图像时,我希望它随后可以更新应用程序所有部分中的图像。

那这是怎么回事...

  1. 单击按钮,然后从照片选择器中选择图像。
  2. 图像被发送到存储它的Azure存储。
  3. 该图像不会更新。
  4. 关闭应用程序。
  5. 加载应用。
  6. 图像现在是更新的图像。

我实质上是在寻找一种“刷新” URI的方法。 我确定这与图像缓存的工作方式有关,但我不确定。 如果我关闭应用程序并再次打开它,则会加载该图像,但这不是理想的解决方案。

总结一下:我需要一种方法来更新/刷新其源在视图模型中绑定的图像的URI,以便它加载新添加的图像。

这是我的xaml ...

 <ffimageloading:CachedImage HeightRequest="125"
                             WidthRequest="125" 
                             x:Name="img_dp"
                             LoadingPlaceholder="ic_user_default.png"
                             ErrorPlaceholder="ic_user_default.png"
                             CacheDuration="0"
                             CacheType="None"
                             Source="{Binding DisplayPicture}">
                        </ffimageloading:CachedImage>

这是我的视图模型绑定...(UserInfo.DisplayPicture是URI)

private string _displayPicture { get; set; } = UserData.UserInfo.DisplayPicture;
    public string DisplayPicture
    {
        get
        {
            if (_displayPicture == null)
            {
                return "ic_user_default";
            }
            else
            {


                return _displayPicture;
            }
        }
        set
        {
            _displayPicture = value;
            OnPropertyChanged(nameof(DisplayPicture));
        }
    }

PS: 我已经尝试

  • 具有和不具有OnPropertyChanged。
  • 使用ImageSource类型而不是字符串作为绑定类型。
  • 使用FFImageLoadings功能清除缓存。

0 个答案:

没有答案