c#为什么ListBoxItem不能显示每张图片(左侧)

本文关键字:张图片 左侧 显示 为什么 ListBoxItem 不能 | 更新日期: 2023-09-27 18:21:59

我有一个ListBox,它应该显示每个项目的图片。我写了代码,当我运行它时,图片无法显示,只能显示文本。我的代码做错了什么?我确保图像文件路径正确。

我想用文本(右侧)和图标(左侧)显示每个项目。

WPF:

<ListBox Name="ListTest" DisplayMemberPath="Name"  HorizontalAlignment="Left" Height="358" Margin="603,38,0,0" VerticalAlignment="Top" Width="361">
</ListBox>

C#

public partial class UserControl2 : UserControl
{
    public UserControl2()
    {
        InitializeComponent();
        this.LoadLogos();
    }
    private void LoadLogos()
    {
        this.ListTest.Items.Add(new CompanyDataContext("Adobe", "Adobe is a designing tool.", "/Company Logos/testDinner.jpg"));
        this.ListTest.Items.Add(new CompanyDataContext("Facebook", "FedEx is a social networking website.", "/Company Logos/facebook.jpg"));
        this.ListTest.Items.Add(new CompanyDataContext("FedEx", "FedEx is a courier company.", "/Company Logos/fedex.jpg"));
    }
    private class CompanyDataContext
    {
        public CompanyDataContext(string name, string about, string image)
        {
            this.Name = name;
            this.About = about;
            this.Image = image;
        }
        public string Name { get; private set; }
        public string About { get; private set; }
        public string Image { get; private set; }
    }
}

c#为什么ListBoxItem不能显示每张图片(左侧)

CompanyDataContext需要一个DataTemplate,因为它不是从Visual继承的,WPF不知道如何渲染它,因此它对此调用ToString方法。

这可以用ListBox 的DataTemplate处理

未测试模板:

<ListBox.ItemTemplate>
            <DataTemplate>
                <Border x:Name="bord" CornerRadius="5" Margin="2" BorderBrush="LightGray" BorderThickness="3" Background="DarkGray">
                    <StackPanel Margin="5">
                        <TextBlock x:Name="txt" Text="{Binding Name}" FontWeight="Bold"/>
                        <Image Source="{Binding Image}" Height="100"/>
                    </StackPanel>
                </Border>
            </DataTemplate>
</ListBox.ItemTemplate>

编辑的打字错误