Xamarin.Forms Обновить URI изображения, используя FFImageLoading? - PullRequest
0 голосов
/ 15 декабря 2018

В моем приложении у меня есть кнопка и изображение.Я нажимаю кнопку, она загружает устройство выбора фотографий устройств, а затем при выборе устанавливает источник изображения для выбранного изображения.

Это работает нормально, если я устанавливаю изображение непосредственно с помощью кода с помощью (ImageName) .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 для очистки кэша.
...