组合框不显示图像
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"));
【讨论】:
这确实解决了问题!非常感谢您的回答!我很确定我之前尝试过,但它没有用,但也许我的问题是另一个问题。以上是关于组合框不显示图像的主要内容,如果未能解决你的问题,请参考以下文章