2010-10-05 73 views
0

我有創建圖像(Object.Image)的對象數組,我想在組合框中顯示圖像。如何在Silverlight組合框中顯示圖像數組?

<ComboBox x:Name="typeSelection" ItemsSource="..." DisplayMemberPath="Image"></ComboBox> 

Combobox顯示Image.ToString(),而不是圖像本身,如何解決它。

+0

「Image」屬性的實際類型是什麼? – AnthonyWJones 2010-10-05 14:49:27

+0

圖像控制,silverlight – INs 2010-10-05 14:55:12

回答

3

您需要爲組合框設置ItemTemplate。像這樣.... (這是的路徑的陣列圖像,而不是實際的圖像)

<ComboBox> 
    <ComboBox.ItemTemplate> 
     <DataTemplate> 
      <Image Source="{Binding MySourcePath}"/> 
     </DataTemplate> 
    </ComboBox.ItemTemplate> 
</ComboBox> 

here是組合框的Silverlight中

+0

我將圖像更改爲BitmapSource,但您的答案是最接近的,所以我會接受它。 – INs 2010-10-06 12:58:04

0

一個很好的例子的組合框的默認實現是使用ItemSource作爲項目列表的來源,並使用DisplayMemberPath作爲用於TextBlock.Text值的屬性的名稱。因此它會查看您的「Image」屬性並執行.ToString()將其轉換爲列表中的TextBlocks。

相反,您需要實現一個ComboBoxItem控件模板,以描述每個顯示項目(文本,圖像,任何)中的元素。這些控件本身將包含對對象屬性的綁定。 e.g:

<Image Source={Binding Image}/> 

正如Muad'Dib指出(30秒之前),圖像必須是一個字符串,它是圖像,而不是實際的圖像對象的路徑。