"Items collection must be empty before using ItemsSource."

29 浏览
0 Comments

"Items collection must be empty before using ItemsSource."

我试图在一个WPF ListView中显示像WrapPanel一样的图片,正如这篇旧的ATC Avalon团队文章所描述的那样:如何创建一个自定义视图

当我尝试使用一个LINQ-to-Entities查询的ADO.NET Entity Framework对象集合来填充ListView时,我遇到了以下异常:

异常

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

我的代码...

Visual Basic

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

XAML

    

我在那一行上打了一个断点。在LINQ分配之前,ListViewImages.ItemsSourceNothing

admin 更改状态以发布 2023年5月23日
0
0 Comments

这个特定的异常被抛出的原因是元素的内容被应用到ListView的Items集合中。因此,XAML初始化ListView时,会在它的Items集合中放置一个local:ImageView。但是在使用ItemsControl时,必须使用Items属性或ItemsSource属性,不能同时使用两者。因此,当处理ItemsSource属性时,会抛出异常。

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

[ContentPropertyAttribute("Items")]

这里的意图是将ListView的View设置为local:ImageView,因此修复方法是显式表明要设置的属性。

修复XAML,异常就会消失:


    
        
    

缺少了标签。

0
0 Comments

我曾在一个稍微不同的情况下长期遇到了这个错误。原因是XAML无效,因为有一些标签缺失。

我之前有这段:


    

我把它修复成了:


    
        
    

0