2010-09-16 44 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和公正以字節讀取它。

符合您的要求嗎?