WPF 入门系列2 项目创建

发布时间:2025-10-19

本文为WPF 入门系列的第二篇,主要介绍如何创建 WPF 项目。本项目为资产管理系统,使用 Visual Studio开发,项目采用分层结构,用仓储模式开发。

创建项目

我使用 Visual Studio 作为 IDE 进行介绍,其他 IDE 也是差不多的流程。在 Visual Studio 中选择 创建新项目,在弹出的项目模板中选择 WPF 应用程序(C#),需要注意的是,如果你还安装了 VB 开发环境,那么在创建项目模板中同时也包含了 VB 的 WPF 项目模板,所以这里不要选择成了 VB 语言 或者 .NET Framework 模板。

https://static.scung.cn/01653fbc-77ac-4afe-9e52-8a2deafdf52f.jpg

选好模板之后,会进入到项目的配置页面,我们将项目名称设置为: RMS,然后选择一个项目存放的文件夹,在之后弹出的框架页面我们就选择上一章安装的 .NET 8.0 ,然后点击下一步就正式进入开发界面了。

https://static.scung.cn/fb7d6bb1-7899-4e36-a0ea-f5ccbfa2844a.jpg

现在我们已经得到了一个 WPF 的项目,项目中有 MainWindow 窗口,点击上方的运行按钮,就能看到默认的这个窗口。

https://static.scung.cn/28c001b9-447c-4a5d-aebc-69a714c033c1.jpg

接下来我们来处理一下整个项目解决方案的结构,上面说了采用分层结构,仓储模式开发,那我们创建两个类库项目:RMS.CoreRMS.Infrastructure,完成了我们的三层架构。

https://static.scung.cn/dee05ffa-eb68-4865-a357-f376754e479f.jpg

RMS.Core 中为整个资产管理系统的核心部分,其中定义了该系统所用到的实体(数据模型)。

RMS.Insfrastructure 为该项目的基础设施,包含了所有的数据仓库,为系统提供了数据的交互基。

RMS 是整个程序的应用层,其中包含了所有的用户交互界面,负责接收用户的输入,调用基础设施处理程序再输出给用户。

安装需要的包

开发 WPF 项目,离不开的一个概念就是 MVVM ,这是软件界面开发的一种思想,它允许界面和逻辑分离,让开发人员更加专注于逻辑和数据。

为了更方便的在 WPF 中使用 MVVM ,我们需要安装一些额外的包来做支持。我们需要使用到 NuGet,这是一个为 .NET 平台打造的软件包管理器。 它让开发人员能够方便地创建、共享和使用第三方库和代码包。 通过集成到Visual Studio 等开发工具中,NuGet 可以简化项目中添加、移除和管理依赖项的整个过程,包括处理依赖关系和版本控制。

在 Visual Studio 中,找到 工具 >> NuGet 包管理器 >>管理解决方案的 NuGet 程序包,即可打开整个解决方案的 NuGet 管理器。

https://static.scung.cn/aeb2dfbd-e21c-440f-a5d3-c81c333e693c.jpg

整个 NuGet 管理页面主要分为了浏览已安装更新合并四个主要板块。浏览页面用来搜索特定的 NuGet 包,已安装页面中可以看到整个解决方案中安装过的包,更新页面则是会检索整个解决方案中发布新版本的包。

https://static.scung.cn/e095890c-b716-4cb9-be88-90cb5cbbc1c9.jpg

这里我们使用 PropertyChanged.Fody 这个包简化开发的步骤。首先在 NuGet 程序包界面中切换浏览页面,在搜索框中输入PropertyChanged.Fody,搜索到的第一个包就是我们要安装的,选中这个包,侧边会出现这个包的介绍信息和可以安装的项目文件,选中我们的项目 RMS,点击安装按钮即可将 PropertyChanged.Fody 添加到我们的项目中。

https://static.scung.cn/b7300e36-68c1-42b1-b19b-d6b9c6f21dd4.jpg

其他阅读

vscode Material Design Theme

Material Design Theme 是由猪头少年(scung-cn)开发的一套基于 Material Design 设计语言的 Visual Studio Code 主题插件,可以在扩展市场上直接下载安装。

查看原文

Nginx重定向HTTP到HTTPS

HTTP协议以纯文本形式进行数据的交互,数据明文传输,容易被监听,窃取和伪造,HTTPS在HTTP的基础上,使用了TLS/SSL对通信过程进行加密,数据得到了有效的保护,就算被拦截到也无法获取信息,更没法实施中间人攻击。本文将会介绍如何在Nginx中配置HTTP重定向到HTTPS。

查看原文

如何查看系统端口占用

在web开发中,时常会遇到开发的应用无法启动,这种情况一般是由于当前监听端口已经被别的应用先行占用监听了。本文就 Windows 和 Linux 介绍一下查看端口占用程序。

查看原文

Js使用原型链对对象进行扩展

在C#的扩展方法中,我们了解到了一种不需要修改源对象定义即可为对象添加新的行为的方法,在JavaScript中,我们通过原型链也可以实现类似的效果,为对象添加新的行为。需要一定的Js原型链基础。

查看原文

静态文件防盗链的一种思路

在我们的系统中,总会有一些资源需要保护起来不被盗走,如果是动态接口可以通过验证权限来保护,静态资源大多需要对外开放,比较难以保护,本文就介绍保护静态文件资源一种思路——那就是使用 HTTP 中 Referer 头。

查看原文