【发布时间】:2011-01-23 03:14:59
【问题描述】:
在ValueConverter 中,我试图将System.Data.Linq.Binary(SQL CE 映像)转换为BitmapImage。此方法有效(图像在表单上正确显示):
public object Convert(object value, Type targetType, object parameter,
CultureInfo culture) {
Binary binary = value as Binary;
if (binary != null) {
BitmapImage bitmap = new BitmapImage();
bitmap.BeginInit();
bitmap.StreamSource = new MemoryStream(binary.ToArray());
bitmap.EndInit();
return bitmap;
}
return null;
}
这个方法不工作(但奇怪的是没有抛出异常):
public object Convert(object value, Type targetType, object parameter,
CultureInfo culture) {
Binary binary = value as Binary;
if (binary != null) {
using (var stream = new MemoryStream(binary.ToArray())) {
BitmapImage bitmap = new BitmapImage();
bitmap.BeginInit();
bitmap.StreamSource = stream;
bitmap.EndInit();
return bitmap;
}
}
return null;
}
良好的编程实践表明您应该处理您创建的任何流......所以我很困惑为什么第二种方法不起作用,但第一种方法起作用。有什么见解吗?
【问题讨论】:
-
我这里有一些更简单的示例代码:erikej.blogspot.com/2009/11/…
-
您从 byte[] 到 Image 的转换代码使用
Image.FromStream(ms);,这似乎是特定于 Windows 窗体的(我使用的是 WPF)。我检查了System.Windows.Media.Imaging.BitmapImage和System.Windows.Controls.Image,它们都没有FromStream方法。不过感谢您的链接。
标签: wpf sql-server-ce memorystream valueconverter