组合框不显示图像

Posted

技术标签:

【中文标题】组合框不显示图像【英文标题】:ComboBox not showing images 【发布时间】:2021-06-25 17:41:10 【问题描述】:

我正在尝试使用 xaml 中的图像创建一个组合框,但图像只是没有显示。我不确定我做错了什么,但我遵循了几个不同的教程并尝试了很多不同的事情(例如更改数据传递到组合框的方式,更改图像文件格式等......)没有成功...

这是我的代码:

在 XAML 中:

<ComboBox x:Name="cbFloor" HorizontalAlignment="Left" VerticalAlignment="Top" Height="30" Width="120" >
                                <ComboBox.ItemTemplate>
                                    <DataTemplate>
                                        <StackPanel Orientation="Horizontal">
                                            <Image Source="Binding Image" Width="30" Height="30"/>
                                            <TextBlock Text="Binding Label" VerticalAlignment="Center" Padding="10 0 0 0"/>
                                        </StackPanel>
                                    </DataTemplate>
                                </ComboBox.ItemTemplate>
                            </ComboBox>

在 C# 中:

public partial class Gui : Window

     public Gui()
     
          InitializeComponent();

          string imageDirectory = //string directory to a folder on my PC
          // I tried using different file formats to see if that was the problem. None of them works.
          cbFloor.Items.Add(new PictureItem(new BitmapImage(new Uri(imageDirectory + "wood.jpg", UriKind.Relative)), 
                                            "Hardwood"));
          cbFloor.Items.Add(new PictureItem(new BitmapImage(new Uri(imageDirectory + "linoleum.png", UriKind.Relative)), 
                                            "Linoleum"));
          cbFloor.Items.Add(new PictureItem(new BitmapImage(new Uri(imageDirectory + "icon16.bmp", UriKind.Relative)), 
                                            "Stone Tiles"));
     



public class PictureItem

    public BitmapImage Image  get; set; 
    public string Label  get; set; 

    public PictureItem(BitmapImage BitImg, string label)
    
        Image = BitImg;
        Label = label;
    

这就是我得到的:

我没有想法...任何帮助将不胜感激。谢谢!

【问题讨论】:

【参考方案1】:

问题在于UriKind.Relative。删除它或使用UriKind.Absolute

cbFloor.Items.Add(new PictureItem(new BitmapImage(new Uri(imageDirectory + "wood.jpg")), "Hardwood"));
cbFloor.Items.Add(new PictureItem(new BitmapImage(new Uri(imageDirectory + "linoleum.png")), "Linoleum"));
cbFloor.Items.Add(new PictureItem(new BitmapImage(new Uri(imageDirectory + "icon16.bmp")), "Stone Tiles"));

或者

cbFloor.Items.Add(new PictureItem(new BitmapImage(new Uri(imageDirectory + "OckovaciPrukaz.jpg", UriKind.Absolute)), "Hardwood"));
cbFloor.Items.Add(new PictureItem(new BitmapImage(new Uri(imageDirectory + "linoleum.png", UriKind.Absolute)), "Linoleum"));
cbFloor.Items.Add(new PictureItem(new BitmapImage(new Uri(imageDirectory + "icon16.bmp", UriKind.Absolute)), "Stone Tiles"));

【讨论】:

这确实解决了问题!非常感谢您的回答!我很确定我之前尝试过,但它没有用,但也许我的问题是另一个问题。

以上是关于组合框不显示图像的主要内容,如果未能解决你的问题,请参考以下文章

组合框不显示数据项

Extjs组合框不显示所选值

组合框和列表框不显示文本文件的内容

ExtJS/MODx CMP:网格编辑不保存到数据库,组合框不显示

图片框不显示图像

ExtJS 组合框不呈现