gpt4 book ai didi

c# - 在我的类中将图像控件绑定(bind)到 BitmapImage

转载 作者:行者123 更新时间:2023-11-30 15:33:49 25 4
gpt4 key购买 nike

以前每当我想显示一个图像时,我都会将图像路径绑定(bind)到图像的源属性。太容易了。

现在我想更改图像并始终显示最新更改的图像。更改图像保存在我的类中的 BitmapImage 属性中。因此,我不想让图像控件从光盘加载图像,而是想将它直接绑定(bind)到我的 BitmapImage 属性。但是图像不显示。

然后(仅用于测试)我创建了一个值转换器,使用其中图像的路径创建了一个 BitmapImage 并将其返回给控件 - 然后显示了图像。

再一次:从转换器内部的路径创建一个 BitmapImage 是可行的。将图像控件绑定(bind)到在我的类中使用相同代码创建的 BitmapImage 属性失败。

这描述了同样的问题,但“解决方案”不起作用。 (我想知道为什么它被标记为已解决,因为 OP 发表了相同的评论)

https://stackoverflow.com//questions/7263509/directly-binding-a-bitmapimage-created-inside-a-class-bound-to-a-listbox-in-wpf

编辑:这里是一些代码

这是成功创建可见图像的转换器。

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 绑定(bind)。 FileFileInfo 类型,FullName 包含完整路径。

<Image MinHeight="100" MinWidth="100" Source="{Binding SelectedImage.File.FullName, Converter={StaticResource BsConverter}}"/>

我有一个属性 BitmapImage image { get;放; 我在我的类的构造函数中初始化:

image = new BitmapImage();
image.BeginInit();
image.UriSource = new Uri(file.FullName);
image.CacheOption = BitmapCacheOption.OnLoad;
image.EndInit();

...和绑定(bind)。但是——没有快乐。图像不显示。

<Image MinHeight="100" MinWidth="100" Source="{Binding SelectedImage.image}"/>

最佳答案

该属性必须是公共(public)的。为了更新绑定(bind),定义属性的类必须实现 INotifyPropertyChanged界面。

public class SelectedImage : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;

private ImageSource image;

public ImageSource Image
{
get { return image; }
set
{
image = value;

if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("Image"));
}
}
}
}

关于c# - 在我的类中将图像控件绑定(bind)到 BitmapImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16872935/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com