我绑定了程序中的5个不同图像,并希望留下用户以相同名称替换或更新照片的能力。因此,在更新这些图片时,将通知绑定并在程序运行时更改。
该程序是我工作场所的数字VMB(视觉管理板),因此需要保持运行,并在服务器上更新这些照片而无需挂接。目前,我正在与C#中的属性绑定,该属性是包含图像位置的字符串。
在C#中:
public string OpenFilePathProp { get; set; }
在XAML中:
<Image x:Name="OpenWOImage" Source="{Binding OpenFilePathProp}" Stretch="Fill" Margin="25,0,25,0"/>
当用户使用较新图像复制并替换图像时,它们不能因为"当前在另一个过程中打开"。我想是我的wpf中的数据绑定。
是否可以通过将图像打开到文件流中然后结合到流来克服?如果是这样,我完全不确定如何绑定到文件流。我是WPF和C#的新手。
感谢您的帮助。我试图为此寻找一种解决方案,但我认为我只是感到困惑,而且我认为它不会解决我的问题如何绑定到图像对象并关闭该对象以允许覆盖
编辑:以为我应该提到我已经设法将相关图像复制到我的VMB程序的AppData文件夹,
喜欢,
string AppData = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\";
System.IO.File.Copy(Properties.Settings.Default.OpenWOFilePath, System.IO.Path.Combine(AppData, "ROAMaintenanceVMB\OpenWOFilePath_Copy.jpeg"), true);
以这种方式,我可以经常"检查"某人在服务器上覆盖照片,并理论上将"新"照片复制到AppData文件夹,覆盖了先前的版本。这是在另一个程序中已经打开的图像问题的地方。
以下 peter duniho 有关使用WriteableBitmap
在我的实例中工作的建议。
string imagePath = "";
Uri imageUri = new Uri(imagePath);
BitmapImage bitmapImage = new BitmapImage(imageUri);
ImageProperty = new WriteableBitmap(bitmapImage);
<Image Source="{Binding ImageProperty}"/>
这里发生了什么:
-
BitmapImage
是从创建>给定的path
-
WriteableBitmap
是基于BitmapImage
(a&quort'deep copy;?)
创建
这里重要的是原始图像是未锁定,因为绑定与 WriteableBitmap
的图像的复制 - 不与图像本身,因此可以自由删除/替换图像。