过去每当我想显示图像时,我都会将图像路径绑定到图像的源属性。太容易了。
现在我想更改图像并始终显示具有最新更改的图像。更改图像保存在BitmapImage
我班级内的一个属性中。因此,我不想让图像控件从光盘加载图像,而是想将它直接绑定到我的BitmapImage
属性。但是图像没有显示。
然后(仅用于测试)我创建了一个值转换器,使用其中图像的路径创建一个BitmapImage
并将其返回给控件 - 图像显示。
BitmapImage
再次:从转换器内部的路径创建一个有效的。将图像控件绑定到BitmapImage
在我的类中使用相同代码创建的属性失败。
这描述了同样的问题,但“解决方案”不起作用。(我想知道为什么它被标记为已解决,因为 OP 发表了相同的评论)
编辑:这是一些代码
这是成功创建可见图像的转换器。
public class BsConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
BitmapImage bi = new BitmapImage(new Uri(value.ToString()));
return bi;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
...以及显示图像的 XAML 绑定。File
是类型FileInfo
并FullName
保存完整路径。
<Image MinHeight="100" MinWidth="100" Source="{Binding SelectedImage.File.FullName, Converter={StaticResource BsConverter}}"/>
我有一个BitmapImage image { get; set; }
在类的构造函数中初始化的属性:
image = new BitmapImage();
image.BeginInit();
image.UriSource = new Uri(file.FullName);
image.CacheOption = BitmapCacheOption.OnLoad;
image.EndInit();
...和绑定。但是——没有快乐。不显示图像。
<Image MinHeight="100" MinWidth="100" Source="{Binding SelectedImage.image}"/>