当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《"在使用ItemsSource之前,项目集合必须为空."》经验,为你挑选了8个好方法。

我正在尝试将图像显示在WPF ListView中,其风格类似于WrapPanel,如旧的ATC Avalon团队文章中所述:如何创建自定义视图.

WPF ListView WrapPanel图像

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

例外

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

我的代码......

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


    

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



1> kenwarner..:

在一个稍微不同的场景中,我有一段时间出现同样的错误.我有


    

我固定的是


    
        
    


谢谢!这么简单的问题......但是这样一个令人困惑的错误.
对我来说,差异只是缺少(我甚至没有使用wpftoolkit).
哇,这解决了我的问题,非常感谢.

2> Dave..:

抛出此特定异常的原因是元素的内容应用于ListView的Items集合.因此,XAML在其Items集合中使用单个本地:ImageView初始化ListView.但是当使用ItemsControl时,您必须使用Items属性或ItemsSource属性,不能同时使用它们.因此,当处理ItemsSource属性时,将引发异常.

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

[ContentPropertyAttribute("Items")]

这里的意图是将ListView的View设置为local:ImageView,因此修复是明确指示要设置的属性.

修复XAML,异常消失:


    
        
    

它缺少那个标签.


这个答案是对的.但在检查此案例之前,请检查您的xaml是否正确,如其他答案中所述.否则你可以花很多时间查看ItemSource的等等,最终发现它是由一个小错字引起的.

3> Armentage..:

我刚刚遇到了这个问题的一个非常阴险的例子.我的原始片段要复杂得多,这使得很难看到错误.

   
      >
      
           
      
      
           
      
      
    

错误?初始开标签后的额外>!已<应用于内置Items集合.稍后设置DataContext时,即时crashola.因此,在调试此问题时,请注意不仅仅是围绕ItemsControl特定数据子项的错误.


当然,这不仅仅是>会做到这一点.任何意外打字的角色都会成为物品.您可以通过临时删除ItemsSource属性来检查此情况.如果数据网格中仍有行,则需要检查无关字符
Armentage ...你刚刚救了我,我不知道有多少小时在找!!! 非常感谢你发布这个...投票!
同样的事情发生在我身上:额外的`>`=>例外

4> Junior M..:

我也是一个不同的场景.



        
            
                
                  
                    
                    
                  
                
            
        


现在当你完成缺少的标签Control.ItemTemplate时,一切都恢复正常:


    
        
            
                
                  
                    
                    
                  
                
            
        
    



5> 小智..:

我在不同的场景中遇到了同样的错误


    
        
    

解决方案是在ItemsControl.ItemsPanel之前添加标签ItemsPanelTemplate


    
        
            
        
    



6> Bizhan..:

例外

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

ItemsSource 不同来源添加项目时会发生此异常.因此,请确保您没有意外遗漏标签,错误放置标签,添加额外标签或错误编写标签.




     
     
     






     
     
     
     


虽然ItemsControl.ItemsSource已经设置Binding,但其他项目(网格,按钮,...)无法添加到源.但是,ItemsSource如果未使用,则允许使用以下代码:



     
     
     

注意缺失的ItemsSource="{Binding MyItems}"部分.


您在此处所说的内容促使我长时间仔细查看我的数据网格列...然后我意识到它们不在datagrid.columns标记中.+1给我精神慢跑.

7> ΩmegaMan..:

以不同的方式陈述答案; 验证没有丢失的父节点或不正确的节点.

这失败了:

ItemsPanelTemplate子节点没有父(或错误的父)


    
        
    
    ...

这项工作:


     
        
            
        
    
    ...    



8> Ram..:

将模板列保留在DataGrid.Columns中.这有助于我解决这个问题.

Ref:DataGridTemplateColumn:在使用ItemsSource之前,Items集合必须为空.

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有