У меня есть изображение WPF, источником которого является локальный URI на моем жестком диске, и я использую конвертер для его загрузки.WPF Изменение пути к изображению и отображение нового изображения в Runtime
Я хочу, чтобы изменить изображение на жестком диске (заменить его другим) и выполнения показать новое изображение
Здесь XAML изображения
<Image Stretch="Fill">
<Image.Style>
<Style TargetType="Image">
<Setter Property="Source" Value="{Binding ImagePath,Converter={StaticResource ImageFileLoader},UpdateSourceTrigger=PropertyChanged}"/>
</Style>
</Image.Style>
</Image>
Вот преобразователь
class ImageFileLoader : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value != null)
{
string filePath = value.ToString();
if (File.Exists(filePath))
{
BitmapImage result = new BitmapImage();
result.BeginInit();
result.UriSource = new Uri(filePath);
result.CacheOption = BitmapCacheOption.OnLoad;
result.EndInit();
return result;
}
}
return null;
}
}
Примечание: Я попытался изменить CacheOption
в преобразователе для BitmapCacheOption.None
или любой другой вариант ... это did't работу, потому что в этом случае я не могу изменить изображение на жестком диске
@Clemens нет не реализует его, однако реагируют на событие стрельбы PropertyChanged, когда свойство ImagePath изменилось. –
Извините, я неправильно понял ваш XAML. Это не класс ImageFileLoader, который должен был бы реализовать INotifyPropertyChanged, но класс, объявляющий свойство ImagePath. Вы должны, возможно, разместить соответствующие части этого кода. – Clemens
Да, класс модели, содержащий свойство «ImagePath», реализует интерфейс INotifyPropertyChanged ... и это простой класс, который вы можете себе представить, как будто у него есть свойство ImagePath. –