我有创建图像的对象数组(Object.Image),我想在组合框中显示图像。
<ComboBox x:Name="typeSelection" ItemsSource="..." DisplayMemberPath="Image"></ComboBox>
Combobox显示Image.ToString(),而不是图像本身,如何修复它。
答案 0 :(得分:3)
您需要为组合框设置ItemTemplate。这样的事...... (这是针对图像的路径数组,而不是实际图像)
<ComboBox>
<ComboBox.ItemTemplate>
<DataTemplate>
<Image Source="{Binding MySourcePath}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
here是silverlight中组合框的一个很好的例子
答案 1 :(得分:0)
ComboBox的默认实现是使用ItemSource作为项列表的源,并使用DisplayMemberPath作为用于TextBlock.Text值的属性的名称。因此,它会查看您的“Image”属性并执行.ToString()将其转换为列表中的TextBlock。
相反,您需要实现ComboBoxItem控件模板,以描述每个显示项目中的元素(文本,图像等)。这些控件本身包含对对象属性的绑定。 e.g:
<Image Source={Binding Image}/>
正如Muad'Dib指出的那样(30秒前),Image必须是一个字符串,它是图像的路径,而不是实际的图像对象。