【问题标题】: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;
    }
}

这就是我得到的:

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

【问题讨论】:

    标签: c# image xaml combobox


    【解决方案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"));
    

    【讨论】:

    • 这确实解决了问题!非常感谢您的回答!我很确定我之前尝试过,但它没有用,但也许我的问题是另一个问题。
    猜你喜欢
    • 2015-06-10
    • 1970-01-01
    • 1970-01-01
    • 2021-12-13
    • 2021-03-22
    • 1970-01-01
    • 2012-07-14
    • 2013-02-23
    • 2014-12-17
    相关资源
    最近更新 更多