2010-09-16 71 views
0

让我说我有一个数据库中的应用程序菜单与他们的图标图像(二进制数据)。我提取那些图标是byte []类型的菜单。但是,如果没有图标集,那么我想使用不是来自数据库的默认图标,而是来自xap(位于Resources文件夹内)。要显示的图标,从数据库来的时候使用IConverter(字节[]图像),这是基于对以下问题的代码:Silverlight 4,图像到字节数组

Silverlight 4.0: How to convert byte[] to image?

为了能够用我的byte [] - 对图像IConverter,我也想将我的默认图标转换为来自xap的byte []。我该怎么做?下面的问题建议使用WriteableBitmap的类,但我不知道如何从XAP源创建WriteableBitmap的:

Silverlight: image to byte[]

回答

1

我可能会错过理解这里的问题(可能有关于你的转换器的更多细节在这里是必需的),但是如果你转换器类只是基于它的字节返回一个图像,你不能测试数据库中的空字节,然后返回你的默认图像?

public class MyConveter : IConverter { 
    public Image ConvertImage(byte[] bytes) { 
     if (bytes == null) return GetDefaultImage(); 
     else return ConverterBytesToImage(bytes); 
    } 
} 

这样你只需返回一个图像作为方法声明,并且实现处理空字节大小写。

这是正确的轨道吗?

+0

+1:这是一个比我的建议更干净的解决方案(并且隐藏在幕后)。我将添加到我自己的技巧工具箱:) – 2010-09-16 11:31:08

+0

谢谢,我喜欢抽象,并保持这从不需要担心它的水平隐藏:) – Mark 2010-09-16 11:39:16

+0

谢谢你,你的解决方案是非常直观的。 – synergetic 2010-09-17 00:07:29

0

为默认的图标是一个资源,你可以打开它作为一个ResourceStream和公正以字节读取它。

符合您的要求吗?