2021-08-20 WPF控件专题 DataGrid控件详解
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控件详解相关推荐
- 2021-08-12 WPF控件专题 DataGrid控件详解
1.DataGrid控件介绍 DataGrid简介 :MultiSelector Selector ItemsControl -条目控件 网格控件:可以自定义网格显示的数据的控件 自定义网格:列的形式 ...
- DevExpress控件GridControl中的布局详解 【转】
DevExpress控件GridControl中的布局详解 [转] 2012-10-24 13:27:28| 分类: devexpress | 标签:devexpress |举报|字号 订阅 h ...
- 利用Animation控件制作帧动画过程详解
利用Animation控件制作帧动画过程详解 前言 通过Animation控件来达到序列图的播放(素材和示例视频在文章末尾) 一.序列图 (此素材为已经分割好的序列图) 如若序列图在一张图片上,请参考 ...
- wpf 客户端【JDAgent桌面助手】详解(二)桌面宠物制作详解
目录区域: 业余开发的wpf 客户端终于完工了..晒晒截图(此文 由于当时没有开通csdn博客所以在博客园发了,后续文章都是csdn 首发奥) [晒视频了]业余开发wpf 客户端[JDAgent桌面助 ...
- 【卷积神经网络结构专题】一文详解AlexNet(附代码实现)
关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! [导读]本文是卷积神经网络结构系列专题第二篇文章,前面我们已经介绍了第一个真正意义 ...
- 楚留香服务器维护,楚留香手游7月20日更新维护内容及家园系统详解介绍
楚留香手游7月20日更新了什么?游戏在今天进行了一系列的更新,本次更新上线了非常多的内容和玩法还有全新的家园系统.那么小伙伴们知道具体更新了什么吗?下面是分享的攻略解析,一起来看下哦! 楚留香手游7. ...
- WPF 控件专题 Image控件详解
1.Image 介绍 Image:表示用于显示图像的控件. Image可以加载以下图像类型:.bmp..gif..ico..jpg..png..wdp 和 .tiff.但是在显示多帧图像时,仅显示第一 ...
- WPF 控件专题 Grid 控件详解
1.Grid 介绍 定义由列和行组成的灵活的网格区域,Grid顾名思义就是"网格",它的子控件被放在一个一个实现定义好的小格子里面,整齐配列,该对象可包含多个 Children对象 ...
- WPF 控件专题 Menu 控件详解
1.Menu 介绍 Menu 表示一个 Windows 菜单控件,该控件可用于按层次组织与命令和事件处理程序关联的元素. 该 Menu 控件提供一个项列表,用于指定应用程序的命令或选项. 通常,单击菜 ...
最新文章
- 可以发张图片做链接用吗
- 力扣(LeetCode)刷题,简单题(第15期)
- 高效进行 Oracle 日常巡检——数据库基本情况检查
- angular学习笔记(二十五)-$http(3)-转换请求和响应格式
- SQL99标准中的查询(MySQL)
- MooTools Class 使用、继承详解
- PYTHON 函数的返回值
- JZOJ__Day 9:【普及模拟】算法学习(sfxx)
- 为什么老师批改完试卷,分数下要画两条横线?今天终于知道了!
- 为JPA的本机查询API键入安全查询
- 宝塔linux配置php环境扩展,CentOS7下宝塔面板php安装mssql扩展
- 亚信基于AWS构建世界级企业互联网平台
- 在Exchange Server 2007中修改邮件接受域
- java并发编程(1)--线程 可见性 volatile怎么用
- 使用bs4+re正则来爬取网页上需要的数据
- matlab程序 直线插补,用Matlab实现直线插补计算程序讲解学习
- 计算机温度在20度最佳湿度环境,空调房温度20℃湿度一般是多少
- 计算机知识竞赛活动工作总结,环保知识竞赛活动总结范文
- pimple学习(1)pimple的使用
- Flink 如何分流数据