我目前无法尝试在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。