DataGrid多行数据的展示和编辑(6)
注意:
- DataGrid用于多行数据的展示和编辑,ItemsSource用来设定显示的数据源。控件默认自动创建列,AutoGenerateColumns="False"设置为不自动生成列。
- 手动向columns中增加列,常用的列类型为:DataGridTextColumn ,Header 设定标题,Bing 属性为列绑定的数据。
- Datagrid默认所有列是可以编辑的,若Mode=TwoWay那修改后数据源就会变化;可是只为只读模式IsReadOnly=false
- 不想自动新增行则设置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; //通过为列所起的名字来赋值
第四步:测试完成。