wpf入门教程系列二十一——datagrid示例

倾城风云 倾城风云     2022-09-20     807

关键词:

 前面我们学习了ListView控件的使用示例,今天我们来学习DataGrid的有关知识。提到DataGrid 不管是Asp.Net中的网页开发还是WinForm应用程序开发都会频繁使用。通过它我们可以灵活的在行与列间显示各种数据。本篇将学习WPF中的DataGrid 相关功能。

      首先,先介绍一下DataGrid中有哪些列的类型。

DataGrid列的类型

   默认情况下,当我们为DataGrid 控件设置ItemSource 属性后,DataGrid 会根据数据类型自动生成相应的列,下表列出DataGrid 支持的四种列及其数据类型。

下表列出了 DataGrid 提供的四个列类型。

列类型

显示数据

数据类型

DataGridHyperlinkColumn

使用显示 URI 数据。

URI

DataGridComboBoxColumn

使用显示枚举数据与其他需要下拉框选择的数据。

Enum,String

DataGridTextColumn

使用显示文本

String

DataGridCheckBoxColumn

使用显示布尔数据

Bool

 

 

 

 

 

 

  在创建DataGrid 时可以通过AutoGenerateColumns 属性设置列是否自动生成,从而加入自定义列。如果DataGrid 中同时包含“自动生成列”与“用户自定义列”,则首先创建“用户自定义列”。如下图。

 

其次:我们来做一个示例,学习如何使用DataGrid。

制做DataGrid示例的界面

1)按照上一篇文章中所写的步骤,使用Visual Studio 2013创建一个WindowGrid界面。如下图。

 

2)在Visual studio 2013中的工具箱中,找到DataGrid控件,然后双击。把DataGrid控件添加窗体界面中。如下图1,图2。注意,图2中的红框所标示的那个小框,就是DataGrid控件,是不是与WindowForm中的DataGrid有很大的不同呀。

 

图1

 

图2

3)给DataGrid添加列。先鼠标左键选中,窗体界面中的小方块,然后点击Visual Studio 2013最右边的“属性”标签,然后Visual Studio 2013会弹出“属性”编辑窗口。如下图。

 

4) 在上图中使用鼠标左键点击Columns那一行的按钮。如上图中的红色框,然后会弹出一个对话框,如下图。

 

4)在上图中,选择相应的列的类型,然后点击“添加”按钮,添加列。如下图。

 

5) 根据我这个示例的实际情况,我根据需要我添加了5列DataGridTextColumn,和一列DataGridComboBoxColumn。添加完成之后,如下图。看起来与WindowForm中的DataGrid很像了吧。

 

6) 下面是全部完成之后的实际的XAML代码。

 

复制代码
<Window x:Class="WpfApp1.WindowGrid"

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

        Title="Grid示例" Height="400" Width="600">

    <Grid>

        <Grid.RowDefinitions>

            <RowDefinition Height="*"/>

            <RowDefinition Height="auto"/>

            <RowDefinition Height="22"/>

        </Grid.RowDefinitions>

        <DataGrid x:Name="gridCitys"  Grid.Row="0" HorizontalAlignment="Left" VerticalAlignment="Top" AutoGenerateColumns="False">

            <DataGrid.Columns>

 

                <DataGridTextColumn Binding="{Binding CityID}" ClipboardContentBinding="{x:Null}" Header="CityID"/>

                <DataGridTextColumn Binding="{Binding CityName}" ClipboardContentBinding="{x:Null}" Header="CityName"/>

                <DataGridTextColumn Binding="{Binding ZipCode}" ClipboardContentBinding="{x:Null}" Header="ZipCode"/>

                <DataGridComboBoxColumn x:Name="cboProvince" ClipboardContentBinding="{x:Null}" Header="ProvinceID" SelectedValuePath="ProvinceID" SelectedValueBinding="{Binding Path=ProvinceID,UpdateSourceTrigger=PropertyChanged}"  DisplayMemberPath="ProvinceName" SelectedItemBinding="{x:Null}" >

 

                </DataGridComboBoxColumn>

                <DataGridTextColumn Binding="{Binding DateCreated}" ClipboardContentBinding="{x:Null}" Header="DateCreated"/>

                <DataGridTextColumn Binding="{Binding DateUpdated}" ClipboardContentBinding="{x:Null}" Header="DateUpdated"/>

 

            </DataGrid.Columns>

        </DataGrid>

        <StackPanel Grid.Row="1" Orientation="Horizontal" HorizontalAlignment="Right" >

            <TextBlock Text="显示信息" TextAlignment="Center"  />

            <TextBox Name="txtMsg" IsReadOnly="True" Text="" Width="320" TextAlignment="Center" />           

           

        </StackPanel>

        <WrapPanel Grid.Row="2" Orientation="Horizontal" HorizontalAlignment="Right">

            <Button  HorizontalAlignment="Right"  Name="btnRefresh" Height="22" VerticalAlignment="Top" Width="65" Click="btnRefresh_Click">刷新</Button>

            <Button  HorizontalAlignment="Right"  Name="btnUpdate" Height="22" VerticalAlignment="Top" Width="65" Click="btnUpdate_Click"  >更新</Button>

        </WrapPanel>

    </Grid>

</Window>
复制代码

 

 

wpf入门教程系列二十——listview示例

第四步、WPF后台逻辑代码编写在后台用EntityFramework6.1的CodeFirst方式获取数据库中的数据。同时,在“刷新”按钮的方法中进行数据绑定。操作步骤如下:1) 在“刷新”按钮上使用鼠标右键,单击,会弹出“属性”窗口。如下... 查看详情

wpf入门教程系列十一——依赖属性

一、依赖属性基本介绍  本篇开始学习WPF的另一个重要内容依赖属性。    大家都知道WPF带来了很多新的特性,其中一个就是引入了一种新的属性机制——依赖属性。依赖属性出现的目的是用来实现WPF中的样式、... 查看详情

hadoopmapreduce编程api入门系列之网页流量版本1(二十一)

   不多说,直接上代码。  对流量原始日志进行流量统计,将不同省份的用户统计结果输出到不同文件。                       代码packag 查看详情

springboot2系列教程(二十一)|自动配置原理

微信公众号:一个优秀的废人。如有问题,请后台留言,反正我也不会听。前言这个月过去两天了,这篇文章才跟大家见面,最近比较累,大家见谅下。下班后闲着无聊看了下SpringBoot中的自动配置,把我的理解跟大家说下。配... 查看详情

《c#零基础入门之百识百例》(二十一)数组遍历--删除数组零元素

...题分析3.3参考代码前言本文属于C#零基础入门之百识百例系列文章。此系列文章旨在为学习C#语言的童鞋提供一套系统的学习路径。此系列文章都会通过【知识点】【练习题】的形式呈现。有任何问题,你都可以通过评论,私信... 查看详情

wpf入门教程系列十九——listview示例

 经过前面的学习,今天我做一个比较综合的WPF程序示例,主要包括以下功能: 1) 查询功能。从数据库(本地数据库(local)/Test中的S_City表中读取城市信息数据,然后展示到WPF的Window上的一个ListView上。2) 数据联动功... 查看详情

linux系列教程(二十一)——linux的bash基本功能

  上篇博客我们介绍了什么是shell,以及编写shell脚本的两种执行方式。我们知道在敲命令的时候,有很多快捷键,比如tab键能补全命令,在比如为什么我们直接敲ll命令能显示目录的长格式,其实这是bash的基本功能。本篇博... 查看详情

wpf学习第二十一章特殊容器(代码片段)

原文:【WPF学习】第二十一章特殊容器  内容控件不仅包括基本控件,如标签、按钮以及工具提示;它们还包含特殊容器,这些容器可用于构造用户界面中比较大的部分区域。  首先介绍ScrollViewer控件,该控件直接继承自Conte... 查看详情

java多线程快速入门(二十一)

CountDownLatch(闭锁)计数器  有一个任务A,它要等待其他4个任务执行完毕之后才执行,此时就可以利用CountDownLatch来实现这种功能packagecom.cppdy;importjava.util.concurrent.CountDownLatch;classMyThread17extendsThread{privateCountDownLatchcountdownlatc 查看详情

通学智能合约系列(二十一)--结构体<下>(代码片段)

大家好,通学技术,学通技术,让我们一起继续来看看智能合约结构体memory和storage类型转换吧~6、结构体storage转storage详解hello,大家好,我们紧接着上节内容来看看,结构体关于storage和memory类型的转换。... 查看详情

wpf学习第二十一章特殊容器(代码片段)

  内容控件不仅包括基本控件,如标签、按钮以及工具提示;它们还包含特殊容器,这些容器可用于构造用户界面中比较大的部分区域。  首先介绍ScrollViewer控件,该控件直接继承自ContentControl类,提供了虚拟界面,允许用... 查看详情

《c#零基础入门之百识百例》(九十一)预处理器指令--代码示例

...表达式3.4代码示例前言本文属于C#零基础入门之百识百例系列文章。此系列文章旨在为学习C#语言的童鞋提供一套系统的学习路径。此系列文章都会通过【知识点】【练习题】的形式呈现。有任何问题,你都可以通过评论,私信... 查看详情

《c#零基础入门之百识百例》(九十一)预处理器指令--代码示例

...表达式3.4代码示例前言本文属于C#零基础入门之百识百例系列文章。此系列文章旨在为学习C#语言的童鞋提供一套系统的学习路径。此系列文章都会通过【知识点】【练习题】的形式呈现。有任何问题,你都可以通过评论,私信... 查看详情

第二十一节——springmvc拦截器入门(代码片段)

一、设置一个target路径,用于跳转到index页面@ControllerpublicclassTargetController@RequestMapping("/target")publicModelAndViewshow()ModelAndViewmodelAndView=newModelAndView();modelAndView. 查看详情

vue教程(二十一)子组件传参父组件(代码片段)

Vue教程(二十一)子组件传参父组件要点通过事件向父组件发送消息this.$emit()代码实现<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible" 查看详情

reactnative系列教程之十一插件的安装使用与更新(示例:react-native-tab-navigator)

本站文章均为 李华明Himi 原创,转载务必在明显处注明: 转载自【黑米GameDev街区】原文链接: http://www.himigame.com/react-native/2294.htmlwidth="150"height="210"frameborder="0"scrolling="no 查看详情

springboot入门二十一,全局异常处理

一共两个文件,一个处理全局异常,保存信息到日志,另外一个负责返回异常信息给接口,只要将其文件添加到项目中,无需再做其他配置即可1.MyExceptionHandler.java全局异常处理类优先执行此类,这里不好抓取404、403等错误信息getMaps()请... 查看详情

hulu机器学习问题与解答系列|二十一:分类排序回归模型的评估

本期问题的解答结合了具体的Hulu业务案例,可以说是很有趣又好懂了。快快学起来吧!  今天的内容是【分类、排序、回归模型的评估】 场景描述在模型评估过程中,分类问题、排序问题、回归问题往往需要使用不... 查看详情