WPF入门教程系列二——Application介绍

WPF入门教程系列三——Application介绍(续)

WPF入门教程系列四——Dispatcher介绍

WPF入门教程系列五——Window 介绍

WPF入门教程系列十一——依赖属性(一)

WPF入门教程系列十五——WPF中的数据绑定(一)

WPF技术的主要特点是数据驱动UI,所以在使用WPF技术开发的过程中是以数据为核心的,WPF提供了数据绑定机制,当数据发生变化时,WPF会自动发出通知去更新UI。

今天我们来学习.NET 7中的WPF里面的DataGrid的有关知识。数据表格DataGrid是一个使用非常广泛的控件,不管是在Asp.Net中的网页开发还是WinForm(WPF)应用程序开发都会频繁使用。通过数据表格DataGrid可以灵活、方便、有效的显示各种数据。自己翻看之前写的DataGrid的示例,这个示例写的有些简单,没有使用Command指令,没有使用MVVM模式,现在看来有些欠缺。准备将这个DataGrid示例进行完善一下,并在示例中应用Command指令与MVVM模式。

WPF控件DataGrid 提供了一种灵活的方法,用于在行和列中显示数据集合。 DataGrid包括用于托管自定义内容的内置列类型和模板列。内置行类型包括一个下拉详细信息部分,可用于在单元格值下方显示其他内容。

一、创建项目

1. 在Visual Studio 2022启动界面中选择“创建新项目”,如下图。

2. Visual Studio 2022弹出的“创建新项目”的对话框中做如下选择。如下图。

  • 在最左边的下拉框中,选择 “C# ,如下图中1处
  • 在中间的下拉框中,选择 “所有平台”,如下图2处。
  • 在最右边的下拉框中,选择“桌面”,如下图3处。
  • 在下图中4处,选择“WPF应用程序”模板,点击“下一步”按钮。

4.在弹出的“配置新项目”的对话框中,如下图,在“项目名称”输入框中,输入“WpfGridDemo.NET7”。然后使用鼠标点击“下一步”按钮。

5. 在弹出的“其他信息”的对话框,如下图。在“框架”下拉框中,选择“NET 7.0(标准期限支持)”。其他值选择默认值即可。然后使用鼠标点击“创建”按钮。

二、创建实体

首先进行准备工作,先创建实体,我们使用的是省市县区的示例数据,这个数据网上比较丰富,可以方便找到。

1. 在Visual Studio 2022的“解决方案资源管理器”中,使用鼠标右键单击“WpfGridDemo.NET7”项目,在弹出菜单中选择“添加-->新建文件夹”。如下图。

2. 在Visual Studio 2022的“解决方案资源管理器”中,将“新文件夹”改名为 “Entitys”,然后使用鼠标右键单击“Entitys”文件夹,在弹出菜单中选择“添加--> 类”。 在“添加新项”对话框中将类命名为 Area,然后选择“添加”。

3. 在Visual Studio 2022的“解决方案资源管理器”中,使用鼠标双击打开刚才创建的Area.cs文件,添加如下代码:

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace WpfGridDemo.NET7.Entitys
{
public class Area
{
public int Id { get; set; } [StringLength(10)]
public string Code { get; set; } [StringLength(30)]
public string Name { get; set; } [StringLength(10)] public string CityCode { get; set; }
public DateTime Created { get; set; }
public DateTime Updated { get; set; } }
}

4.重得执行第2,3步,在Visual Studio 2022创建City与Province类,这两个类的代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace WpfGridDemo.NET7.Entitys
{
public class City
{
public int Id { get; set; }
[StringLength(10)]
public string Code { get; set; } [StringLength(30)]
public string Name { get; set; } [StringLength(10)]
public string ProvinceCode { get; set; }
}
} using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace WpfGridDemo.NET7.Entitys
{
public class Province
{
public int Id { get; set; }
[StringLength(10)]
public string Code { get; set; } [StringLength(30)]
public string Name { get; set; } } }

5  使用NuGet下载最新版的Entity Framework Core 7。在解决方案资源管理器中——>在项目WpfGridDemo.NET7中的依赖项上鼠标右键单击——>弹出一个菜单,选中“管理NuGet程序包”,如下图。

6. 在打开的NuGet包管理界面的中选择“浏览”标签页,在搜索框中输入“Entity”,找到最新版本Entity Framework Core,点击安装。如下图。

7.  Visual Studio 2022 开始安装 EntityFrameworkCore 7.0.3,会弹出安装确认界面,点击“OK”按钮。如下图。

Microsoft.EntityFrameworkCore

Microsoft.EntityFrameworkCore.SqlServer

8.安装完成之后,如下图。

9. 在Visual Studio 2022的解决方案资源管理器中,使用鼠标右键点击“WpfGridDemo.NET7”项目,在弹出菜单中选择“添加-->类”,在弹出的“添加新项”对话框中,选择添加 “GridDbContext”类,并在中定义实体对应的DbSet,以应用Code First 数据迁移。添加以下代码

using Microsoft.EntityFrameworkCore;
using System.Collections.Generic;
using System.Data;
using System.Reflection;
using WpfGridDemo.NET7.Entitys; namespace WpfGridDemo.NET7
{
public class GridDbContext : DbContext
{
public GridDbContext(DbContextOptions<GridDbContext> options) : base(options)
{ } public DbSet<Area> Area { get; set; }
public DbSet<City> City { get; set; }
public DbSet<Province> Province { get; set; } }
}

10.在Visual Studio 2017中的资源管理器中找到appsettings.json文件,用鼠标双击打开,在文件中添加一个连接字符串,代码如下。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add></add>
</appSettings>
<connectionStrings> <add name="GridDbContext" connectionString="Server=.;Database=EFCoreDemo;Trusted_Connection=True;
Encrypt=False;TrustServerCertificate=True;MultipleActiveResultSets=true" /> </connectionStrings>
</configuration>

11.从Visual Studio 2022的菜单中选择“工具->NuGet包管理器器—>程序包管理器控制台”菜单。

12. 在PMC中,默认项目选择EntityframeworkCore对应的项目后。输入以下命令:Add-Migration AddEntityCitys,创建迁移。

13. 在上面的命令执行完毕之后,创建成功后,会在Migrations文件夹下创建时间_AddEntityCitys格式的类文件,这些代码是基于DbContext指定的模型。

14.在程序包管理器控制台,输入Update-Database,回车执行迁移。执行成功后,以上三个步骤,我在前面的文章中已经多次写过了,这里就简单写一下。

15. 在SQL Server Management Studio中查看数据库,Province、Area、City三个表创建成功。至于具体的数据,请在网上查找。

WPF入门教程系列二十四——DataGrid使用示例(1)的更多相关文章

  1. WPF入门教程系列二十二——DataGrid示例(二)

    DataGrid示例的后台代码 1)  通过Entity Framework 6.1 从数据库(本地数据库(local)/Test中的S_City表中读取城市信息数据,从S_ Province表中读取 ...

  2. WPF入门教程系列二十——ListView示例(二)

    第四步.WPF后台逻辑代码编写 在后台用Entity Framework 6.1的Code First方式获取数据库中的数据.同时,在“刷新”按钮的方法中进行数据绑定.操作步骤如下: 1)  在“刷新 ...

  3. WPF入门教程系列二十三——DataGrid示例(三)

    DataGrid的选择模式 默认情况下,DataGrid 的选择模式为“全行选择”,并且可以同时选择多行(如下图所示),我们可以通过SelectionMode 和SelectionUnit 属性来修改 ...

  4. WPF入门教程系列(二) 深入剖析WPF Binding的使用方法

    WPF入门教程系列(二) 深入剖析WPF Binding的使用方法 同一个对象(特指System.Windows.DependencyObject的子类)的同一种属性(特指DependencyProp ...

  5. WPF入门教程系列二——Application介绍

    一.Application介绍 WPF和WinForm 很相似, WPF与WinForm一样有一个 Application对象来进行一些全局的行为和操作,并且每个 Domain (应用程序域)中仅且只 ...

  6. WPF入门教程系列二十一——DataGrid示例(一)

    前面我们学习了ListView控件的使用示例,今天我们来学习DataGrid的有关知识.提到DataGrid 不管是Asp.Net中的网页开发还是WinForm应用程序开发都会频繁使用.通过它我们可以 ...

  7. WPF入门教程系列二

    WPF控件和布局 一.  前言  公司项目基于WPF开发,最近项目上线有点空闲时间写一篇基于wpf的基础教材,WPF也是近期才接触,学习WPF也是在网上查资料与微软的MSDN进行学习,写本博客的目为了 ...

  8. python入门教程之二十四Python MySQL - mysql-connector 驱动

    MySQL 是最流行的关系型数据库管理系统,如果你不熟悉 MySQL,可以阅读我们的 MySQL 教程. 本章节我们为大家介绍使用 mysql-connector 来连接使用 MySQL, mysql ...

  9. WPF入门教程系列三——Application介绍(续)

    接上文WPF入门教程系列二——Application介绍,我们继续来学习Application 三.WPF应用程序的关闭 WPF应用程序的关闭只有在应用程序的 Shutdown 方法被调用时,应用程序 ...

  10. WPF入门教程系列(一) 创建你的第一个WPF项目

    WPF入门教程系列(一) 创建你的第一个WPF项目 WPF基础知识 快速学习绝不是从零学起的,良好的基础是快速入手的关键,下面先为大家摞列以下自己总结的学习WPF的几点基础知识: 1) C#基础语法知 ...

随机推荐

  1. Python基础教程:字典

    字典 = {'键1':'值1','键2':'值2','键3':'值3',...} animal_dict = {'Cow':'Milk','Chicken':'egg'} 字典由键值对构成,这种键值对 ...

  2. 痞子衡嵌入式:RISC-V指令集架构MCU开发那些事 - 索引

    大家好,我是痞子衡,是正经搞技术的痞子.本系列痞子衡给大家介绍的是RISC-V指令集架构微控制器相关知识. RISC-V指令集最早要追溯到2010年,是加州大学伯克利分校的一个研究团队的项目,目标是设 ...

  3. Android笔记--Android+数据库的增加数据的实现

    具体实现 添加成功: 界面代码很简单,直接忽略. 连接数据库的代码: Connect.java package com.example.myapplication.database; import a ...

  4. 在CentOS中安装Docker

    概述 Docker是一款使用Golang开发的开源容器引擎,我们可以使用Docker将自己的应用和相关依赖进行打包,实现在不同服务器上进行快速部署,而不需要再更多关注部署环境的差异性.结合kubern ...

  5. ngix安装与使用

    主要是nginx的安装使用, 至于原理 1. 安装nginx(以及两个tomcat) 2. 使用nginx(测试负载均衡) 想要搭建的测试环境, 1.两个tomcat, 端口分别是80和8090(因为 ...

  6. 每次SSH执行完都会关闭通道,返回目录,如果想一次执行多步操作,需要多条命令才能达到目的时,用;分割操作指令,一并导入执行

    每次SSH执行完都会关闭通道,返回目录,如果想一次执行多步操作,需要多条命令才能达到目的时,用:分割操作指令,一并导入执行: 例如: self.execmd='cd ../tmp/log/;pwd;t ...

  7. Python Web开发初试,基于Flask

    目录 关于web框架 Python flask使用 关于web框架 仅仅对于应用层的coder而言,web框架的使用其实就是写路由,分发路由,写输出.当然如果要安全,要测试,要写优秀的接口,那需要继续 ...

  8. 【随笔】Axios delete传递数组问题

    pre { overflow-y: auto; max-height: 300px } img { max-width: 500px; max-height: 300px } Axios delete ...

  9. vue中新的状态管理器-pinia

    背景 对于pinia的使用,可参考官方文档在这不做过多赘述.这边主要来讲讲pinia中 少用且好用的方法,为什么我们选择pinia而不用vuex ps: 以下写法全部基于组合式API 使用方式: 先下 ...

  10. Nmap基本使用【速查版】

    列举远程机器开放的端口 nmap [域名] 列举远程机器开放的端口和服务 nmap --dns-servers 8.8.8.8 [域名] nmap进行探测之前要把域名通过DNS服务器解析为IP地址,我 ...