【WPF异常】在使用 ItemsSource 之前,项集合必须为空

 1 <DataGrid x:Name="dataGrid" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" Width="620" Height="269" AutoGenerateColumns="False" GridLinesVisibility="None" CanUserDeleteRows="False"
 2                     CanUserAddRows="False" ItemsSource="{Binding ListStudent}">
 3             <DataGridTextColumn Header="编号" Width="80" Binding="{Binding Student.studentid}"/>
 4             <DataGridTextColumn Header="姓名" Width="80" Binding="{Binding Student.name}"/>
 5             <DataGridTextColumn Header="年龄" Width="80" Binding="{Binding Student.age}"/>
 6             <DataGridTextColumn Header="性别" Width="80" Binding="{Binding Student.sex}"/>
 7             <DataGridTextColumn Header="特点" Width="120" Binding="{Binding Student.remark}"/>
 8             <DataGridTemplateColumn Header="选中" SortMemberPath="IsSelected" Width="120">
 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="620" Height="269" AutoGenerateColumns="False" GridLinesVisibility="None" CanUserDeleteRows="False"
 2                     CanUserAddRows="False" ItemsSource="{Binding ListStudent}">
 3             <DataGrid.Columns>
 4             <DataGridTextColumn Header="编号" Width="80" Binding="{Binding Student.studentid}"/>
 5             <DataGridTextColumn Header="姓名" Width="80" Binding="{Binding Student.name}"/>
 6             <DataGridTextColumn Header="年龄" Width="80" Binding="{Binding Student.age}"/>
 7             <DataGridTextColumn Header="性别" Width="80" Binding="{Binding Student.sex}"/>
 8             <DataGridTextColumn Header="特点" Width="120" Binding="{Binding Student.remark}"/>
 9             <DataGridTemplateColumn Header="选中" SortMemberPath="IsSelected" Width="120">
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>

改为以上即可

时间: 2024-08-25 07:49:16

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

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

原文:WPF 在使用 ItemsSource 之前,项集合必须为空 <DataGrid x:Name="datagrid" ItemsSource="{Binding ElementName=Mwindow, Path=Preson}" Margin="0,0,0,20"> <DataGrid.Columns> <DataGridTextColumn Binding="{Binding Name}"

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

今天在做ListBox和Combobox绑定的时候,都出现过“在使用 ItemsSource 之前,项集合必须为空”的错误. Combobox比较简单,代码如下: <ComboBox x:Name="cbxPage" Width="30" Height="30" BorderBrush="{StaticResource CustomBorderColor}" Style="{StaticResource Cus

获取列表中某一个文件夹下的列表项集合(不包含子文件夹对象,也不包含子文件夹中的列表项)

RT,方法如下: 1 SPListItemCollection GetSubItemsWithoutFoldersInParrentFolder(SPFolder parrent) 2 { 3 SPList list = parrent.Item.ParentList; 4 SPQuery query = new SPQuery(); 5 query.Folder = parrent; 6 query.Query = "<Where><Eq><FieldRef Na

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

解决WPF程序中ListBox ItemsSource变化时不重置ScrollBar的问题 当我们改变ListBox的ItemsSource时,会发现这样一个问题:数据源变化时,虽然控件中的内容会跟着变化,但滚动条却不会重置. 举个例子: 将ListBox绑定到一百个字符串:listbox.ItemsSource = Enumerable.Range(0, 100).Select(i => "## " + i);. 将ListBox的滚动条拖到最后,使之能看到最后的"#

WPF异常捕获三种处理 UI线程, 全局异常,Task异常

原文:WPF异常捕获三种处理 UI线程, 全局异常,Task异常 protected override void OnStartup(StartupEventArgs e){base.OnStartup(e);RegisterEvents();} private void RegisterEvents(){//TaskScheduler.UnobservedTaskException += (sender, args) =>//{// MessageBox.Show(args.Exception

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

原文:WPF 设置类库项目为启动项,设置窗体跟随. 1.添加用于启动的类Program.cs,需要一个静态的Main函数入口. using System; using System.Windows; using System.Windows.Controls; 棕色部分实现窗口的位置固定和跟随. public class Program { private static Application _MainApplication; internal static Application MainA

判断集合是否为空 、 工具类

/**     * 判断集合是否为空     *      * @param list     *            集合     */    public static boolean isEmpty(List list) {        if (list != null && list.size() > 0) {            return false;        } else {            return true;        }    }

java 对象、集合的非空判断

自我总结,有什么不到位的地方,请各位纠正补充,感激不尽! 目的:使程序更严谨 ***对象验证是否不为空:  if( null != obj ) ***List验证不为空:if( null != list && list.size() > 0 ) ***Map验证不为空:if( null != map && map.size() > 0 ) 好了,废话不多说,上代码 实体类Student(随便起一个) package com.core.test; public c

判断集合是否非空

/** * 判断集合是否非空 * @param collection * @return */ public static boolean isEmptyCollection(Collection<?> collection){ boolean flag = true; if(null != collection){ if(collection.size() > 0){ flag = false; } } return flag; } /** * 判断集合是否非空 * @return *