1. <DataGrid x:Name="dataGrid" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" Width="" Height="" AutoGenerateColumns="False" GridLinesVisibility="None" CanUserDeleteRows="False"
  2. CanUserAddRows="False" ItemsSource="{Binding ListStudent}">
  3. <DataGridTextColumn Header="编号" Width="" Binding="{Binding Student.studentid}"/>
  4. <DataGridTextColumn Header="姓名" Width="" Binding="{Binding Student.name}"/>
  5. <DataGridTextColumn Header="年龄" Width="" Binding="{Binding Student.age}"/>
  6. <DataGridTextColumn Header="性别" Width="" Binding="{Binding Student.sex}"/>
  7. <DataGridTextColumn Header="特点" Width="" Binding="{Binding Student.remark}"/>
  8. <DataGridTemplateColumn Header="选中" SortMemberPath="IsSelected" Width="">
  9. <DataGridTemplateColumn.CellTemplate>
  10. <DataTemplate>
  11. <CheckBox IsChecked="{Binding Path=IsSelected,UpdateSourceTrigger=PropertyChanged}" VerticalAlignment="Center" HorizontalAlignment="Center" Command="{Binding Path=DataContext.SelectStudentItemCommand,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type DataGrid}}}"
  12. />
  13. </DataTemplate>
  14. </DataGridTemplateColumn.CellTemplate>
  15. </DataGridTemplateColumn>
  16. </DataGrid>

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

观察一下便可发现设计器里没有正确显示各列,是因为少了DataGrid.Columns节点

  1. <DataGrid x:Name="dataGrid" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" Width="" Height="" AutoGenerateColumns="False" GridLinesVisibility="None" CanUserDeleteRows="False"
  2. CanUserAddRows="False" ItemsSource="{Binding ListStudent}">
  3. <DataGrid.Columns>
  4. <DataGridTextColumn Header="编号" Width="" Binding="{Binding Student.studentid}"/>
  5. <DataGridTextColumn Header="姓名" Width="" Binding="{Binding Student.name}"/>
  6. <DataGridTextColumn Header="年龄" Width="" Binding="{Binding Student.age}"/>
  7. <DataGridTextColumn Header="性别" Width="" Binding="{Binding Student.sex}"/>
  8. <DataGridTextColumn Header="特点" Width="" Binding="{Binding Student.remark}"/>
  9. <DataGridTemplateColumn Header="选中" SortMemberPath="IsSelected" Width="">
  10. <DataGridTemplateColumn.CellTemplate>
  11. <DataTemplate>
  12. <CheckBox IsChecked="{Binding Path=IsSelected,UpdateSourceTrigger=PropertyChanged}" VerticalAlignment="Center" HorizontalAlignment="Center" Command="{Binding Path=DataContext.SelectStudentItemCommand,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type DataGrid}}}"
  13. />
  14. </DataTemplate>
  15. </DataGridTemplateColumn.CellTemplate>
  16. </DataGridTemplateColumn>
  17. </DataGrid.Columns>
  18. </DataGrid>

改为以上即可

【WPF异常】在使用 ItemsSource 之前,项集合必须为空的更多相关文章

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

    原文:WPF 在使用 ItemsSource 之前,项集合必须为空 <DataGrid x:Name="datagrid" ItemsSource="{Bindin ...

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

    今天在做ListBox和Combobox绑定的时候,都出现过“在使用 ItemsSource 之前,项集合必须为空”的错误. Combobox比较简单,代码如下: <ComboBox x:Nam ...

  3. 判断list集合不为空

    在java开发中新手容易将判断一个list集合是否为空,只以If(list!=null)去判断,且容易和isEmpty()混淆,但是,list集合为空还是为null,是有区别的. 先看一下下面的例子, ...

  4. ComboBox控件“设置 DataSource 属性后无法修改项集合”的解决【转】

    编写Winform程序,遇到comboBox的绑定事件和索引项变更事件的冲突问题,就是“设置 DataSource 属性后无法修改项集合”的错误问题,网上查了很多,大多说在索引项变更是进行非空判断,还 ...

  5. C# LIstbox 解决WinForm下ListBox控件“设置DataSource属性后无法修改项集合”的问题

    解决WinForm下ListBox控件“设置DataSource属性后无法修改项集合”的问题 分类: winform2008-05-24 02:33 2592人阅读 评论(11) 收藏 举报 winf ...

  6. 解决WinForm下ListBox控件“设置DataSource属性后无法修改项集合”

    解决WinForm下ListBox控件“设置DataSource属性后无法修改项集合” 最近更新: 2013-2-15    587   很少写WinForm程序第一次使用ListBox控件就遇到了比 ...

  7. WPF异常捕获,并使程序不崩溃!

    原文:WPF异常捕获,并使程序不崩溃! 在.NET中,我们使用try-catch-finally来处理异常.但,当一个Exception抛出,抛出Exception的代码又没有被try包围时,程序就崩 ...

  8. WPF 设置类库项目为启动项,设置窗体跟随。

    原文:WPF 设置类库项目为启动项,设置窗体跟随. 1.添加用于启动的类Program.cs,需要一个静态的Main函数入口. using System; using System.Windows; ...

  9. 解决WPF程序中ListBox ItemsSource变化时不重置ScrollBar的问题

    解决WPF程序中ListBox ItemsSource变化时不重置ScrollBar的问题 当我们改变ListBox的ItemsSource时,会发现这样一个问题:数据源变化时,虽然控件中的内容会跟着 ...

随机推荐

  1. Linux音频编程(三)混音器介绍

    一.介绍 1.mixer:用来控制多个输入.输出的音量,也控制输入(microphone,line-in,CD)之间的切换,可以将多个信号组合或者叠加在一起.声卡上的混音器由多个混音通道组成,它们可以 ...

  2. javase中的super、this和protected关键字

    关键字 this 记住一句话:this是指向对象本身的一个指针. 注意: this只能用于方法体内,且只能在非静态方法中,也就是说只有实例调用的方法中才能出现this,我们可以认为当new了一个实例后 ...

  3. Linux日常之命令sed

    一. 命令sed简介 利用命令sed能够同时处理多个文件多行的内容,可以不对原文件改动,仅把匹配的内容显示在屏幕上,也可以对原文件进行改动,但是不会在屏幕上返回结果,若想查看改动后的文件,可以使用命令 ...

  4. Chrome,firefox解除阻止视频自动播放

    Firefox 66 将阻止自动播放音频和视频 PingWest品玩2月5日报道,从发布适用于桌面的 Firefox 66 和 Firefox for Android 开始,Firefox 将默认阻止 ...

  5. Codeforces 911 三循环数覆盖问题 逆序对数结论题 栈操作模拟

    A #include <bits/stdc++.h> #define PI acos(-1.0) #define mem(a,b) memset((a),b,sizeof(a)) #def ...

  6. Mybatis的体系结构(转载)

    原文:http://blog.csdn.net/hupanfeng/article/details/9068003/ MyBatis的前身叫iBatis,本是apache的一个开源项目, 2010年这 ...

  7. [COGS 755]山海经:线段树

    网上似乎这道题的题解很少?写一个吧 我跟这道题的渊源追溯到了上个学期刚刚学线段树的那一天... 当时线段树专题前边的题都是一些板子就不一会就水过了,然后就看到了最后一题的它:山海经 那一个上午,我竭尽 ...

  8. Shiro(二)

    1 Shiro的授权 1.1 授权流程 1.2 授权方式 shiro支持三种方式的授权 1.2.1 编程式 通过编写if/else完成授权代码. if(subject.hasRole("ro ...

  9. CSS-overflow-scroll 滑动粘手

    长列表的滑动,CSS属性给了 overflow: auto:在IOS上可能会出现“粘手”效果,即滑动很慢.卡顿.粘手 解决: 启动硬件加速渲染: -webkit-overflow-scrolling: ...

  10. 对ECMAScript的研究-----------引用

    ECMAScript 新特性与标准提案 一:ES 模块 第一个要介绍的 ES 模块,由于历史上 JavaScript 没有提供模块系统,在远古时期我们常用多个 script 标签将代码进行人工隔离.但 ...