我正在爲Windows Phone 7編寫應用程序,儘管我想我理解如何綁定字段,但我無法將圖像綁定到XAML元素。圖像數據綁定XAML,Silverlight,C#,Windows Phone 7.1
這是我的形象元素是如何在我的XAML定義:
<image Source="{Binding ImageLocation}" > </image>
ImageLocation是一個字符串屬性。出於某種原因,如果「ImageLocation」是一個指向Internet上圖像的字符串(例如「http://whatever/image.jpg」),但是如果圖像存儲在本地時不顯示任何內容在孤立的存儲上。
事實上,圖像位於Isolated Storage中名爲「Images」的文件夾中。因此,我已經嘗試將ImageLocation屬性設置爲「Images \ image.jpg」,但沒有奏效。圖像根本不顯示。我也嘗試了一些變體,如「/Images/image.jpg」,「http://localhost/Images/image.jpg」,以及其他各種奇怪的組合。
我也試圖做到這一點:
<image Source="{Binding Path=ImageLocation}"> </image>
但也不能工作。如果圖像位於本地,則圖像根本不顯示,但如果它位於遠程站點,則該圖像始終有效。
我看到了使用「轉換器」顯示圖像的網絡上的各種示例。由於我是C#和Silverlight的新手,我不太明白爲什麼我需要一個轉換器。據我瞭解,轉換器對於圖像來說,只會根據XAML元素的要求(我可能是錯的)返回字符串或實際圖像數據。但是,由於我事先知道一個字符串應該工作,爲什麼我甚至不得不寫這個轉換器?
除了圖像,我所有的其他領域都正確綁定。
這裏是我的代碼設置一些想法:
我定義我的XAML頁面有一個ItemTemplate和一個DataTemplate一個列表框元素。在裏面,我有一個兩列分別保存圖像和文本字段的網格。
除此之外,我有一個從IList派生的類來支持延遲加載。這個類有一個「ListItems」列表,表示列表框的每一行。 ListItem具有字符串屬性,用於定義圖像以及與它們相關的一些文本。正如我所提到的那樣,文本字段可以正常工作,並且圖像僅在ImageLocation屬性指向Internet上的某個位置時纔有效,但不是隔離存儲上的位置。
我已經檢查了獨立存儲瀏覽器工具,並確保我試圖加載的映像位於獨立存儲上,因此它不是找不到該文件的問題。
感謝您的意見或建議。
創建一個返回圖像的屬性並綁定到替代 – JonAlb
@JonAlb:雖然這會工作,是遠遠不夠靈活有單獨的圖像性能,所有的需要從文件名創建。對於大多數綁定轉換,最好使用轉換器。然後在使用後,您不會在內存中攜帶圖像。 –