微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

“在使用 ItemsSource 之前,项目集合必须为空”

如何解决“在使用 ItemsSource 之前,项目集合必须为空”

引发此特定异常的原因是元素的内容被应用于 ListView 的 Items 集合。local:ImageView因此,XAML 使用其Items集合中的单个初始化 ListView 。但是在使用 ItemsControl 时,您必须使用Items属性ItemsSource属性,不能同时使用两者。因此,当处理 ItemsSource 属性时会引发异常。

您可以通过查找类上的 contentpropertyAttribute 来找出元素的内容将应用于哪个属性在这种情况下,它在类层次结构中更高的 ItemsControl 上定义:

[contentpropertyAttribute("Items")]

此处的目的是将 ListView 的 View 设置为 local:ImageView,因此解决方法是明确指示要设置的属性

修复 XAML,异常消失:

<ListView Name="ListViewImages"
          SelectionMode="Single"
          ItemsSource="{Binding}">
    <ListView.View>
        <local:ImageView />
    </ListView.View>
</ListView>

它缺少那个<ListView.View>标签

解决方法

我试图让图像显示在 WPF ListView 中,其样式类似于 WrapPanel,如旧 ATC Avalon
团队文章中所述:如何创建自定义视图

当我尝试使用 LINQ-to-Entities 查询的 ADO.NET 实体框架对象集合填充 ListView 时,出现以下异常:

例外

在使用 ItemsSource 之前,项目集合必须为空。

我的代码”

视觉基础

Private Sub Window1_Loaded(...) Handles MyBase.Loaded
    ListViewImages.ItemsSource = From g In db.Graphic _
                                 Order By g.DateAdded Ascending _
                                 Select g
End Sub

XAML

<ListView Name="ListViewImages"
          SelectionMode="Single"
          ItemsSource="{Binding}">
    <local:ImageView />
</ListView>

我在那条线上放了一个断点。 ListViewImages.ItemsSourceNothing在 LINQ 分配之前。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。