DataGrid多行数据的展示和编辑(6)

注意:

  1. DataGrid用于多行数据的展示和编辑,ItemsSource用来设定显示的数据源。控件默认自动创建列,AutoGenerateColumns="False"设置为不自动生成列。
  2. 手动向columns中增加列,常用的列类型为:DataGridTextColumn ,Header 设定标题,Bing 属性为列绑定的数据。
  3. Datagrid默认所有列是可以编辑的,若Mode=TwoWay那修改后数据源就会变化;可是只为只读模式IsReadOnly=false
  4. 不想自动新增行则设置CanUserAddRows=“False”

第一步:新建窗体DataGridWindow.xaml拖动一个DataGrid命名为dg1。

第二步:使用ListBox实例中的Student类

第三步:为DataGridWindow窗体添加loaded事件,代码如下

1  private void Window_Loaded(object sender, RoutedEventArgs e)
2         {
3             List<Student> list = new List<Student>();
4             list.Add(new Student(){ Name = "张三", Age = 15, Score = 60 ,Gender=false,ClassName="一班"});//若存在无参的构造函数则是要有小括号的。
5             list.Add(new Student { Name = "李四", Age = 19, Score = 80 ,Gender=true,ClassName="一班"});
6             list.Add(new Student { Name = "王五", Age = 20, Score = 90, Gender=false,ClassName="二班"});
7             //关联list控件lbStudent和list中的Item,ListBox显示的集合是ItemsSource属性,不是DataContext
8             dg1.ItemsSource = list;

第三步:设置DataGrid中的属性,如下

1 <DataGrid AutoGenerateColumns="True" Height="101" HorizontalAlignment="Left" Margin="12,12,0,0" Name="dg1" VerticalAlignment="Top" Width="254" ></DataGrid>
2         <DataGrid AutoGenerateColumns="False" Height="130" HorizontalAlignment="Left" Margin="12,119,0,0" Name="dg2" VerticalAlignment="Top" Width="254" CanUserAddRows="False">
3             <DataGrid.Columns>
4                 <DataGridTextColumn Binding="{Binding Name}" Header="姓名"></DataGridTextColumn>
5                 <DataGridCheckBoxColumn Binding="{Binding Gender}" Header="性别" IsReadOnly="True"></DataGridCheckBoxColumn>
6                 <DataGridComboBoxColumn SelectedItemBinding="{Binding ClassName}" x:Name="colClassName"></DataGridComboBoxColumn>
7             </DataGrid.Columns>
8         </DataGrid> 

再次在Window_Loaded中加入如下代码,使得班级出现下拉列表。

1          List<string> className=new List<string>();
2             className.Add("一班");
3             className.Add("二班");
4             className.Add("三班");
5        colClassName.ItemsSource=className;  //通过为列所起的名字来赋值  

第四步:测试完成。

posted @ 2013-05-28 16:08  秋水惜朝  阅读(381)  评论(0编辑  收藏  举报