2010-10-05 71 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秒之前),图像必须是一个字符串,它是图像,而不是实际的图像对象的路径。