【问题标题】:WPF Listbox Images from a database来自数据库的 WPF 列表框图像
【发布时间】:2010-11-25 03:51:39
【问题描述】:

(我们使用 OpenID 有多久了?我似乎没有连接到任何提供商,而且地球上似乎没有常见问题解答告诉您当您丢失 OpenID 时该怎么办。我不得不创建一个新帐户。啊!)

我正在尝试从数据库中填充(轮播)列表框,但无法显示图像。网络上的每个示例都假设您在一个文件夹中而不是在内存中有两个或三个 jpeg :(

我的物品类别是:

public class PicCollection : ObservableCollection<CarouselItem>
{
    public PicCollection()
    {

    }
}
public class CarouselItem
{
    public int ItemID { get; set; }
    public string ItemName { get; set; }
    public string ItemDesc { get; set; }
    public Image ItemImage { get; set; }

    public CarouselItem(int NewItemID, string NewItemName, string NewItemDesc, Image newItemImage)
    {
        this.ItemID = NewItemID;
        this.ItemName = NewItemName;
        this.ItemDesc = NewItemDesc;
        this.ItemImage = newItemImage;
    }
}

我从数据库中成功填充了 PicCollection(使用字节数组作为图像),并尝试使用显示名称和图像

    <DataTemplate x:Key="TestDataTemplate2"  >
        <StackPanel Orientation="Horizontal">
            <TextBlock x:Name="CarName" 
                           Text="{Binding ItemName}"  
                           Padding="15,15"
                           Foreground="Yellow" />
            <Image Source="{Binding Source=ItemImage}"
                   Stretch="Fill" />
            </StackPanel>
    </DataTemplate>

列表框很简单:

<ListBox Name="lstTest" ItemsSource="{StaticResource TestDataSource}" 
                ItemTemplate="{StaticResource TestDataTemplate2}"></ListBox>

ItemName 显示正常,ItemImage 不显示。我也试过{Binding ItemImage}。大多数示例使用{Binding Path=ItemImage},但这就是 ItemImage 将是包含路径的字符串,而不是实际图像本身。

我正在拔头发。我所做的一切都不会使图像出现。但是,如果我创建一个图像控件并手动分配 ItemImage 的内容,它会显示得很好。我做错了什么?

【问题讨论】:

    标签: wpf data-binding listbox datatemplate


    【解决方案1】:

    由于您的“ItemImage”属性已经是图像,因此您可能只需使用 ContentControl 直接显示图像即可:

    <ContentControl Content="{Binding Image}" />
    

    【讨论】:

      【解决方案2】:

      您的 ItemImage 属性是一个 Image(控件)。使其成为 ImageSource,例如 System.Windows.Media.Imaging.BitmapImage。然后就可以绑定&lt;Image Source="{Binding ItemImage}" /&gt;了。

      【讨论】:

      • 呃!当然!这将教我复制示例并粘贴而不试图完全理解它们。谢谢。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-28
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多