在WPF中绑定图像不会在UI上自动更新

时间:2018-04-08 14:22:43

标签: c# wpf image caching mvvm

我目前无法尝试在UI上显示图像并在此图像更改时自动更新此图像。这就是我到目前为止所拥有的

public abstract class Animals: INotifyPropertyChanged
    {
        private string _image;
        public string Image
        {
            get { return _image; }
            set
            {
                if (_image != value)
                {
                    _image= value;
                    NotifyPropertyChanged("Image");
                }
            }
        }
}

我正在使用此功能来替换我的应用程序正在使用的Image,这就是它的全部目的,能够在UI上显示新图像。

    public class UriToCachedImageConverter : IValueConverter
        {
            public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {
                try
                {
                    if (!string.IsNullOrEmpty(value.ToString()))
                    {
                        var image = new BitmapImage();

                        using (var stream = new FileStream(value.ToString(), FileMode.Open, FileAccess.Read))
                        {
                            image.BeginInit();
                            image.CacheOption = BitmapCacheOption.OnLoad;
                            image.StreamSource = stream;
                            image.EndInit();
                        }
                        return image;
                    }
                }
                catch (Exception)
                {
                    return null;
                }
                return null;
            }
...

以下是我在XAML上的使用方法:

<Window.Resources>
    <utils:UriToCachedImageConverter x:Key="uriToImageConv"></utils:UriToCachedImageConverter>
</Window.Resources>

<DataTemplate>
    <Image Source="{Binding Image, Converter={StaticResource uriToImageConv}}" />
</DataTemplate>

如果我使用更新的图像创建动物的新实例,它确实在UI上显示新图像,而另一个已创建的动物实例查看相同的图像路径显示旧图像。

编辑:数据绑定实际上有效,因为如果我将Image更改为另一个Image路径,它会在UI上更新它,问题是更新已经被替换甚至删除的已加载的Image。

0 个答案:

没有答案