1.DataGrid控件介绍

DataGrid简介 :MultiSelector Selector ItemsControl —条目控件
网格控件:可以自定义网格显示的数据的控件
自定义网格:列的形式,

ListView:类似网格控件:GridView GridViewColumn --CellTemplate—DataTemplate

常用属性
RowHeaderTemplate 行标题模板
CanUserAddRows 是否添加新行
IsReadOnly 是否可以编辑其中的值
VerticalScrollBarVisibility/HorizontalScrollBarVisibility 垂直/水平滚动条的显示
CurrentItem 当前单元格的行绑定的数据项
CanUserDeleteRows 是否可以删除行 Delete 移除当前选择的行
RowStyle / CellStyle 行/单元格 样式
HeadersVisibility 行和列头的可见性
AlternatingRowBackground 交替行上使用的背景画笔 2 1 whIte 2 lightBlue white lightblue
GridLinesVisibility 显示哪些网格线
VerticalGridLinesBrush/HorizontalGridLinesBrush 垂直/水平网格线画笔
RowHeaderWidth 行标题宽度 ColumnHeaderHeight 列标题高度 RowHeight 行高
AutoGenerateColumns 是否自动创建列 false
SelectionUnit/SelectionMode 选择单元(单元格、行或两者)/单选或多选

DataGrid中的列

DataGridTextColumn 文本显示内容,指定的数据类型为String
DataGridCheckBoxColumn 复选框的形式显示内容,指定的数据类型为Boolean
DataGridComboBoxColumn 下拉列表的形式显示内容,指定的数据类型为Enum
DataGridHyperlinkColumn 超链接的形式显示内容,指定的数据类型为Uri
DataGridTemplateColumn 模板列:自定义显示样式,

2.具体案例

<Window x:Class="WpfAppTest.DataGridWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:WpfAppTest"mc:Ignorable="d"Title="DataGridWindow" Height="450" Width="600" Loaded="Window_Loaded"><Grid><DataGrid HeadersVisibility="All" AutoGenerateColumns="False"  CanUserAddRows="False" IsReadOnly="False" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Hidden"  AlternationCount="3" RowHeaderWidth="20"  GridLinesVisibility="All" SelectionUnit="FullRow" SelectionMode="Extended"  Background="White" Name="dgList"  ItemsSource="{Binding UserList}" ><DataGrid.RowStyle><Style TargetType="DataGridRow"><Setter Property="Background" Value="Transparent"/><Style.Triggers><Trigger Property="ItemsControl.AlternationIndex" Value="0"><Setter Property="Background" Value="LightGray"/></Trigger><Trigger Property="ItemsControl.AlternationIndex" Value="1"><Setter Property="Background" Value="LightBlue"/></Trigger><Trigger Property="ItemsControl.AlternationIndex" Value="2"><Setter Property="Background" Value="Orange"/></Trigger></Style.Triggers></Style></DataGrid.RowStyle><DataGrid.Columns><DataGridTextColumn Header="编号" Binding="{Binding UserId}" Width="50"/><DataGridTextColumn Header="姓名" Binding="{Binding UserName}" Width="80"><DataGridTextColumn.HeaderTemplate><DataTemplate><TextBlock Text="{Binding}" Foreground="Red"/></DataTemplate></DataGridTextColumn.HeaderTemplate></DataGridTextColumn><DataGridCheckBoxColumn Header="状态" Binding="{Binding UserState}" Width="50"/><DataGridComboBoxColumn Header="部门"  SelectedValueBinding="{Binding DeptId}"  Width="100" DisplayMemberPath="DeptName" SelectedValuePath="DeptId"  ><DataGridComboBoxColumn.ElementStyle><Style TargetType="ComboBox"><Setter Property="ItemsSource" Value="{Binding DataContext.DeptList,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=Window}}"/></Style></DataGridComboBoxColumn.ElementStyle><DataGridComboBoxColumn.EditingElementStyle><Style TargetType="ComboBox"><Setter Property="ItemsSource" Value="{Binding DataContext.DeptList,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=Window}}"/></Style></DataGridComboBoxColumn.EditingElementStyle></DataGridComboBoxColumn><DataGridTemplateColumn Header="年龄"  Width="50" ><DataGridTemplateColumn.CellTemplate><DataTemplate><Label Content="{Binding UserAge}" Foreground="Green" Background="LightBlue"/></DataTemplate></DataGridTemplateColumn.CellTemplate><DataGridTemplateColumn.CellEditingTemplate><DataTemplate><TextBox Text="{Binding UserAge}"/></DataTemplate></DataGridTemplateColumn.CellEditingTemplate></DataGridTemplateColumn></DataGrid.Columns></DataGrid></Grid>
</Window>
/// <summary>
/// 获取用户信息列表
/// </summary>
/// <returns></returns>
private List<UserInfoNew> GetUserList()
{List<UserInfoNew> list = new List<UserInfoNew>();string sql = "select UserId,UserName,UserState,UserAge,DeptId from UserInfos where DeptId>0";SqlDataReader dr = SqlHelper.ExecuteReader(sql, 1);while (dr.Read()){UserInfoNew user = new UserInfoNew();user.UserId = (int)dr["UserId"];user.UserName = dr["UserName"].ToString();user.UserState = (int)dr["UserState"] == 1 ? true : false;user.UserAge = (int)dr["UserAge"];user.DeptId = (int)dr["DeptId"];list.Add(user);}dr.Close();return list;
}/// <summary>
/// 获取部门列表
/// </summary>
/// <returns></returns>
private List<DeptInfo> GetDepts()
{List<DeptInfo> list = new List<DeptInfo>();string sql = "select DeptId,DeptName from DeptInfos";SqlDataReader dr = SqlHelper.ExecuteReader(sql, 1);while (dr.Read()){DeptInfo dept = new DeptInfo();dept.DeptId = (int)dr["DeptId"];dept.DeptName = dr["DeptName"].ToString();list.Add(dept);}dr.Close();return list;
}private void Window_Loaded(object sender, RoutedEventArgs e)
{//首先,设置comboBox列的数据源   //colDept.DisplayMemberPath = "DeptName";//colDept.SelectedValuePath = "DeptId";//colDept.ItemsSource = GetDepts();//如果没有设置列的Name属性//DataGridComboBoxColumn deptCol = dgList.Columns[3] as DataGridComboBoxColumn;//deptCol.ItemsSource = GetDepts();//dgList.ItemsSource = GetUserList();//初始化DGVModelDGVModel vmodel = new DGVModel();vmodel.UserList = GetUserList();vmodel.DeptList = GetDepts();this.DataContext = vmodel;
}
}public class UserInfoNew
{public int UserId { get; set; }
public string UserName { get; set; }
public bool UserState { get; set; }
public int UserAge { get; set; }
public int DeptId { get; set; }
}public class DeptInfo
{public int DeptId { get; set; }
public string DeptName { get; set; }
}/// <summary>
/// Window的数据上下文
/// </summary>
public class DGVModel
{public List<UserInfoNew> UserList { get; set; }
public List<DeptInfo> DeptList { get; set; }
}

2021-08-20 WPF控件专题 DataGrid控件详解相关推荐

  1. 2021-08-12 WPF控件专题 DataGrid控件详解

    1.DataGrid控件介绍 DataGrid简介 :MultiSelector Selector ItemsControl -条目控件 网格控件:可以自定义网格显示的数据的控件 自定义网格:列的形式 ...

  2. DevExpress控件GridControl中的布局详解 【转】

    DevExpress控件GridControl中的布局详解 [转] 2012-10-24 13:27:28|  分类: devexpress |  标签:devexpress  |举报|字号 订阅 h ...

  3. 利用Animation控件制作帧动画过程详解

    利用Animation控件制作帧动画过程详解 前言 通过Animation控件来达到序列图的播放(素材和示例视频在文章末尾) 一.序列图 (此素材为已经分割好的序列图) 如若序列图在一张图片上,请参考 ...

  4. wpf 客户端【JDAgent桌面助手】详解(二)桌面宠物制作详解

    目录区域: 业余开发的wpf 客户端终于完工了..晒晒截图(此文 由于当时没有开通csdn博客所以在博客园发了,后续文章都是csdn 首发奥) [晒视频了]业余开发wpf 客户端[JDAgent桌面助 ...

  5. 【卷积神经网络结构专题】一文详解AlexNet(附代码实现)

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! [导读]本文是卷积神经网络结构系列专题第二篇文章,前面我们已经介绍了第一个真正意义 ...

  6. 楚留香服务器维护,楚留香手游7月20日更新维护内容及家园系统详解介绍

    楚留香手游7月20日更新了什么?游戏在今天进行了一系列的更新,本次更新上线了非常多的内容和玩法还有全新的家园系统.那么小伙伴们知道具体更新了什么吗?下面是分享的攻略解析,一起来看下哦! 楚留香手游7. ...

  7. WPF 控件专题 Image控件详解

    1.Image 介绍 Image:表示用于显示图像的控件. Image可以加载以下图像类型:.bmp..gif..ico..jpg..png..wdp 和 .tiff.但是在显示多帧图像时,仅显示第一 ...

  8. WPF 控件专题 Grid 控件详解

    1.Grid 介绍 定义由列和行组成的灵活的网格区域,Grid顾名思义就是"网格",它的子控件被放在一个一个实现定义好的小格子里面,整齐配列,该对象可包含多个 Children对象 ...

  9. WPF 控件专题 Menu 控件详解

    1.Menu 介绍 Menu 表示一个 Windows 菜单控件,该控件可用于按层次组织与命令和事件处理程序关联的元素. 该 Menu 控件提供一个项列表,用于指定应用程序的命令或选项. 通常,单击菜 ...

最新文章

  1. 可以发张图片做链接用吗
  2. 力扣(LeetCode)刷题,简单题(第15期)
  3. 高效进行 Oracle 日常巡检——数据库基本情况检查
  4. angular学习笔记(二十五)-$http(3)-转换请求和响应格式
  5. SQL99标准中的查询(MySQL)
  6. MooTools Class 使用、继承详解
  7. PYTHON 函数的返回值
  8. JZOJ__Day 9:【普及模拟】算法学习(sfxx)
  9. 为什么老师批改完试卷,分数下要画两条横线?今天终于知道了!
  10. 为JPA的本机查询API键入安全查询
  11. 宝塔linux配置php环境扩展,CentOS7下宝塔面板php安装mssql扩展
  12. 亚信基于AWS构建世界级企业互联网平台
  13. 在Exchange Server 2007中修改邮件接受域
  14. java并发编程(1)--线程 可见性 volatile怎么用
  15. 使用bs4+re正则来爬取网页上需要的数据
  16. matlab程序 直线插补,用Matlab实现直线插补计算程序讲解学习
  17. 计算机温度在20度最佳湿度环境,空调房温度20℃湿度一般是多少
  18. 计算机知识竞赛活动工作总结,环保知识竞赛活动总结范文
  19. pimple学习(1)pimple的使用
  20. Flink 如何分流数据

热门文章

  1. 2014年面试官识人的五大额外小“潜规则”
  2. 结构光三维重建之单目相机标定
  3. 缠成一坨的耳机线,这机器人两下就能解开
  4. DxfCode各枚举值意义
  5. 最快网络服务器ip地址,本地ISP真实DNS服务器IP地址;加快电脑速度三法
  6. 驱动开发实战之TcpClient
  7. web第四天9.5 主页
  8. 直流浪涌保护器的选型指南方案
  9. git分支及如何解决合并冲突问题
  10. Python--文本对比