wpf - WPF-将列表框绑定(bind)到图像的ObservableCollection

原文 标签 wpf image listbox binding observablecollection

这应该非常简单,但是我无法使其正常工作...

CustomItem是一个类,具有名为ThumbnailImage的属性
我正在尝试将ObservableCollection绑定到ListBox以显示图像。这是我的代码:

public ObservableCollection<CustomItem> AvailableItems { get; set; }

 <ListBox Width="103" Height="480" ItemsSource="{Binding AvailableItems}">
    <ListBox.ItemTemplate>
       <DataTemplate>
          <Border BorderBrush="Black" BorderThickness="1">
             <ContentControl Content="{Binding Path=ThumbnailImage}" 
                                             Width="100" Height="100" />
          </Border>
       </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

CustomItem看起来像这样
    public class CustomItem
        public Image ThumbnailImage { get; set; }
    }

当我运行它时,列表框中什么都没有显示。知道发生了什么事吗?谢谢!

-编辑1-我想我可以从调试中得知的是,当AvailableItems.Count == 5时,closet.Items.Count ==0。我尝试添加ItemsSource =“{Binding AvailableItems,UpdateSourceTrigger = PropertyChanged}”,但是那没有帮助:(

-编辑2-

我在XAML中正在执行以下操作
DataContext="{Binding RelativeSource={RelativeSource Self}}" 

相反,当我在后面的代码中执行以下操作时,一切正常:
DataContext = this;

最佳答案

您发布的代码看起来不错,所以问题可能出在其他地方

  • ListBox是否具有正确的DataContext,以便可以正确绑定到AvailableItems
  • 您如何用代码初始化Image


  • BitmapImage source = new BitmapImage();
    source.BeginInit();
    source.UriSource = new Uri(yourUriString, UriKind.RelativeOrAbsolute);
    source.EndInit();
    
    ThumbnailImage = new Image();
    ThumbnailImage.Source = source;
    

    我将您的代码粘贴到示例项目中,并且工作正常,并在此处上传了代码
    http://www.mediafire.com/download.php?m99kv1uglrr31j9

    将其与您的版本进行比较以查看缺少的内容

    相关文章:

    wpf - 在具有VirtualizationMode = “Recycling”和SeclectionMode = “Extended”的ListBox中选择错误?

    c# - C#-在列表框中选择多个项目并将其转换为Windows窗体中的逗号分隔的字符串

    image - 如何查看.img文件?

    ios - 如何在UIImagePickerController捕获图像的即时获取当前位置?

    image - 如何在magento中从前端上传产品图像

    c# - 选择项目列表框C#

    c# - 拍摄Desktop C#(WPF)的屏幕截图时出现延迟

    c# - 编号列表框

    wpf - 确定谁在WPF窗口中具有焦点

    c# - 清除WPF中的组合框