В моем приложении у меня есть кнопка и изображение.Я нажимаю кнопку, она загружает устройство выбора фотографий устройств, а затем при выборе устанавливает источник изображения для выбранного изображения.
Это работает нормально, если я устанавливаю изображение непосредственно с помощью кода с помощью (ImageName) .Source = "(Источник) ".
Вместо этого я отправляю это изображение и сохраняю его в хранилище Azure и использую UR этого изображения в качестве привязки для источника изображений.Это прекрасно работает.
Однако проблема, с которой я сталкиваюсь, заключается в том, что когда я отправляю изображение, я хочу, чтобы оно обновляло источник изображения без необходимости устанавливать его в коде.Я хочу, чтобы это было сделано через привязку модели представления.
Это потому, что есть части приложения, которые также используют этот URI, и поэтому, когда я обновляю образ в хранилище Azure, я хочу, чтобы он затем обновлялизображение во всех частях приложения.
Так что же происходит, если это ...
- Нажмите кнопку и выберите изображение из средства выбора фотографий.
- Изображение отправленов хранилище Azure, где оно хранится.
- Изображение не обновляется.
- Закрыть приложение.
- Загрузить приложение.
- Изображение теперь обновленное изображение.
По сути, я ищу способ "обновить" 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 для очистки кэша.