C#WPF基础介绍/第一个WPF程序

什么是WPF

WPF(Windows Presentation Foundation)是微软公司推出的一种用于创建窗口应用程序的界面框架。它是.NET Framework的一部分,提供了一套先进的用户界面设计工具和功能,可以实现丰富的图形、动画和多媒体效果。

WPF 使用 XAML(eXtensible Application Markup Language)作为界面设计语言,可以将界面的布局、样式和行为与代码分离,更加灵活。WPF 支持基于分辨率独立的界面设计,可以适应不同的屏幕尺寸和分辨率,提供更好的用户体验。

WPF 引入了一种称为绑定(Data Binding)的机制,可以实现界面和数据模型之间的双向绑定。通过绑定,界面上的控件可以自动更新,反之亦然,使得开发者能够更方便地管理和操作数据。

WPF 还提供了丰富的控件库,包括按钮、文本框、列表框等常用控件,以及扩展的自定义控件。开发者可以通过样式(Style)和模板(Template)来定义和修改控件的外观和行为,实现个性化的界面设计。

除此之外,WPF 还支持动画效果、3D 图形、多媒体播放等功能。开发者可以使用动画效果和转换(Transform)来为控件添加动态和视觉吸引力,使用3D 图形和效果来创建逼真的界面,使用媒体元素和播放器来处理多媒体内容。

WPF 是一种强大的界面框架,可以帮助开发者快速构建漂亮、交互性强的窗口应用程序。它提供了丰富的工具和功能,使界面设计更加灵活,同时也提供了良好的扩展性和可维护性。

集成开发环境选择

VisualStuido 2022

本专栏接下来的C# WPF程序演示,将以Visual Studio 2022集成开发环境(IDE)为基础进行讲解和操作。

第一个WPF程序:

好了,看了这么多了,也该开始创建我们第一个WPF程序了,首先打开VisualStudio2022,如图,点击创建新项目

在搜索栏中搜索WPF即可看到WPF相关模版,我们选择C#的

然后设置基础属性,还是老原则,尽量保持纯英文名称+文件路径,为了演示,创建的程序我先设置成Example1,框架选择默认就可以

以下是项目创建完打开后的样子,如图所示,软件分3个大区

1.可视化编辑区

2.XMAL代码编写区

3.日志区

接下来,介绍一下XAML

1.XAML是什么,这个.CS文件又是什么

我想如果是第一次上手开发WPF程序的朋友肯定会对当前的界面有些懵,都是些什么乱糟糟的,问题不大,先来说XAML:

XAML(eXtensible Application Markup Language)是一种用于描述用户界面和应用程序逻辑的标记语言。它是一种基于 XML 的语法,用于定义界面元素、属性、事件和样式。

在WPF中,XAML用于定义窗口和页面的布局、控件和其属性。通过XAML,开发者可以以一种更可读和清晰的方式描述界面的结构和外观,将界面的内容和行为与代码分离开来,使得界面设计和开发可以并行进行。

XAML 的语法类似于 HTML,使用标签和属性来描述界面元素。例如,下面是一个简单的 XAML 示例,用于创建一个包含按钮和标签的窗口:

<Window x:Class="MyWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Title="My Window" Height="200" Width="300"><Grid><Button Content="Click me" Click="Button_Click"/><Label Content="Hello, WPF!" HorizontalAlignment="Center" VerticalAlignment="Center"/></Grid>
</Window>

在上面的示例中,&lt;Window> 标签表示窗口的开始和结束,&lt;Grid> 标签表示一个布局容器,&lt;Button>&lt;Label> 标签分别表示按钮和标签控件。通过设置属性可以定义界面元素的外观和行为,如按钮的内容和点击事件,标签的文本和对齐方式。

除了创建界面元素,XAML 还支持绑定、样式、模板等功能,可以实现丰富的界面设计和行为逻辑。XAML 与代码之间可以通过名称和事件绑定进行交互,使得界面和代码可以紧密结合,实现更强大的功能和用户体验。

好了,你现在大概已经了解XAML是什么了吧,接下来再说一下.CS

2. .CS文件又是什么?

.CS文件是 C# 源代码文件的扩展名。C#(C Sharp)是一种面向对象的编程语言,由微软公司开发。C# 语言是在.NET 平台上的主要开发语言之一,用于创建各种类型的应用程序,如桌面应用程序、Web 应用程序、移动应用程序等。

.CS文件包含了 C# 代码,可以使用文本编辑器或集成开发环境(IDE)打开和编辑。它包含了定义类、方法、属性、变量、条件语句、循环语句等代码,用于实现程序的逻辑和功能。

例如,下面是一个简单的 C# 示例代码:

using System;public class HelloWorld
{public static void Main(string[] args){Console.WriteLine("Hello, World!");}
}

上面的代码定义了一个名为 HelloWorld 的类,其中包含了一个名为 Main 的方法。在 Main 方法中,使用 Console.WriteLine 方法输出一条信息。

.CS文件作为源代码文件,可以被编译器解析和编译成可执行文件或库文件,以便执行和使用。通过编写和组织 C# 代码,开发者可以实现各种功能和逻辑,并创建各种类型的应用程序。

好了,你现在大概知道XAML和CS分别是什么了吧,接下来我来解刨介绍一下创建的XAML和CS默认内容是什么

3.XAML(默认)

<Window x:Class="Example1.MainWindow"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:Example1"mc:Ignorable="d"Title="MainWindow" Height="450" Width="800"><Grid></Grid>
</Window>

如上图所示↑,

x:Class 是 XAML 中的一个属性,用于指定与当前 XAML 文件相关联的类的名称。

x:Class 属性的值应该是一个有效的类名,该类定义了与 XAML 文件相关联的代码逻辑。该类一般是在 .CS 文件中实现的,通常是一个部分类,其中部分逻辑是在 XAML 文件中定义的。

通过将 x:Class 属性设置为类名,WPF 可以在运行时将 XAML 中的元素与指定的类进行关联。这样,在 XAML 中可以使用代码中定义的属性、方法和事件等。

下面是示例代码每个部分的解释:

部分解释
x:Class="Example1.MainWindow"指定与该 XAML 文件关联的类为 Example1.MainWindow。
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"定义默认 XML 命名空间为 WPF 的 Presentation 命名空间。
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"定义 XAML 命名空间为 WPF 的 XAML 命名空间。
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"定义 Blend 命名空间,用于与 Blend(一种用于设计和开发 WPF 应用程序的工具)集成。
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"定义兼容性命名空间,用于与不同版本的 XAML 解析器兼容。
xmlns:local="clr-namespace:Example1"定义本地命名空间,用于引用 Example1 命名空间,并将其映射到 local 命名空间前缀。
mc:Ignorable="d"声明可忽略的命名空间 d。
Title="MainWindow" Height="450" Width="800"设置窗口的标题、高度和宽度。
&lt;Grid> &lt;/Grid>定义一个 Grid 元素,用于布局其他 UI 元素。

这段代码定义了一个名为 MainWindow 的窗口,其外部布局为一个空的 Grid 元素。命名空间的定义和属性设置,为该 XAML 文件指定了正确的命名空间和与之关联的类。这样,在运行时,WPF 将该 XAML 文件与 Example1.MainWindow 类进行绑定,并根据 XAML 中的元素进行布局和处理逻辑。

4.CS(默认)

上述代码是一个名为 "MainWindow" 的窗口类的定义,其继承自 WPF 框架中的 Window 类。下面是代码中的各个部分的解释:

using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

这些是用于引入所需的命名空间的语句。它们可以让你在代码中使用这些命名空间中定义的类、方法和属性。

namespace Example1
{//...
}

这个代码块定义了一个名为 Example1 的命名空间。命名空间用于组织和区分代码,确保类名的唯一性。

public partial class MainWindow : Window
{public MainWindow(){InitializeComponent();}
}

这是一个名为 MainWindow 的类的定义,它继承自 Window 类。partial 关键字表示该类是一个分部类,可以在其他地方定义其它部分。这里的 MainWindow 类是窗口的主类。

构造函数 MainWindow() 是类的一个方法,用于创建 MainWindow 对象。在构造函数中,调用了 InitializeComponent() 方法,该方法用于加载 XAML 文件并初始化窗口的 UI 元素。

需要注意的是,在 XAML 中通过 x:Class 属性指定的类名 "Example1.MainWindow" 与代码中定义的类名 "MainWindow" 保持一致。这样才能正确地将 XAML 文件与代码连接起来。

程序运行

正如本章标题一样,目的是让各位朋友了解一下WPF的项目基本结构,包括XAML和CS文件分别什么,默认创建的程序是可以直接执行的,点击执行按钮就会生成并执行程序

从上图看,执行后就是一个空白窗口,有窗口名称,包括GUI页面(废话哈哈),是不是觉得没啥意思,那加点东西,来个经典的Hello,World

在XAML中的Gird布局中添加

 <TextBlock Text="Hello,World"HorizontalAlignment="Center"VerticalAlignment="Center"FontSize="16"Foreground="Black" />
  • GridGrid布局自动填满窗口,并将子元素居中放置。
  • HorizontalAlignment="Center"VerticalAlignment="Center":设置水平和垂直方向上的对齐方式为居中。
  • TextBlock:用于显示简单的文本内容。你可以调整FontSizeForeground等属性来自定义样式。

接下来运行一下

运行后如图所示,屏幕中心就会出现Hello,World啦,好了,这就是本章内容了,本章主要是让各位了解一些关于WPF并成功创建生成并执行程序,未来还会更新更多内容,比如各种组件,绑定,窗口,数据交换

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/65129.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

444444444444

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么&#xff1f;二、使用步骤1.引入库2.读入数据 总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 例如&#xff1a;…

项目练习:Vue项目中使用Vuex实现全局功能开发

文章目录 一、场景说明二、代码实现1、通用方法封装2、store配置3、使用Vuex 一、场景说明 我们在开发的过程中&#xff0c;都要求能够把通用方法进行抽象封装&#xff0c;供全局使用 这样&#xff0c;代码更优雅简练。 Vue中就可以用Vuex实现全局方法的开发。 这一篇&#x…

windows C#-使用集合初始值设定项初始化字典

Dictionary<TKey,TValue> 包含键/值对集合。 其 Add 方法采用两个参数&#xff0c;一个用于键&#xff0c;一个用于值。 若要初始化 Dictionary<TKey,TValue> 或其 Add 方法采用多个参数的任何集合&#xff0c;一种方法是将每组参数括在大括号中&#xff0c;如下面…

FPC在智能眼镜中的应用探索【新立电子】

在智能穿戴设备领域&#xff0c;智能眼镜具有独特的便携性、交互性和功能性等特点&#xff0c;智能眼镜的设计追求轻薄、美观与高度集成化。传统刚性电路板因体积庞大、难以弯曲&#xff0c;无法满足智能眼镜的复杂结构需求&#xff0c;而FPC其轻薄、柔软、可弯曲的特性&#x…

【Rust自学】7.1. Package、Crate和定义Module

喜欢的话别忘了点赞、收藏加关注哦&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 7.1.1. Rust的代码组织 代码组织主要包括&#xff1a; 那些细节可以对外暴露&#xff0c;而哪些细节是私有的在作用域内哪些名称有效… …

成功解决GPU和Cuda环境下执行torch.__version__输出2.0.1+cpu而不是正确版本(如2.1.0+cu121)等类似问题?

成功解决GPU和Cuda环境下执行torch.__version__输出2.0.1+cpu而不是正确版本(如2.1.0+cu121)等类似问题? 目录 解决问题 解决思路 T1、安装了CPU版本的PyTorch T2、环境问题 解决方法 重新安装 再次测试 解决问题 GPU和Cuda环境下执行torch.__version__输出2.0.1+cpu而…

51c大模型~合集96

我自己的原文哦~ https://blog.51cto.com/whaosoft/12930135 #SnapGen 终于等来能塞进手机的文生图模型&#xff01;十分之一体量&#xff0c;SnapGen实现百分百的效果 本文的共同一作为墨尔本大学的胡冬庭和香港科技大学的陈捷润和黄悉偈&#xff0c;完成于在 Snap 研究院…

操作系统导论读书笔记

目录 虚拟化抽象&#xff1a;进程抽象&#xff1a;进程概念 虚拟化 抽象&#xff1a;进程 本章讨论操作系统提供的基本的抽象—— 进程。进程的非正式定义非常简单&#xff1a;进程就是运行中的程序。程序本身是没有生命周期的&#xff0c;它只是存在磁盘上面的一些指令&…

知识图谱+大模型:打造全新智慧城市底层架构

在数字化时代&#xff0c;智慧城市的建设正迎来新一轮的变革。本文将探讨如何结合知识图谱和大模型技术&#xff0c;构建智慧城市的全新底层架构&#xff0c;以应对日益增长的数据量和复杂性&#xff0c;提升城市管理的智能化水平。 知识图谱&#xff1a;智慧城市的知识库 知识…

webrtc获取IceCandidate流程

在WebRTC(Web Real-Time Communication)中,ICECandidate是一个关键概念,它用于描述在建立点对点(P2P)连接时可以考虑的潜在通信端点。以下是关于WebRTC中ICECandidate的详细解释: 一、ICECandidate的定义 ICECandidate对象通常包含以下关键属性: foundation:用于唯一…

Unity 实现Canvas显示3D物体

新建一个UI相机&#xff0c;选择渲染层为UI 将主相机的渲染层去掉UI层 、 将Canvas的RenderMode设置为Screen Space - Camera,将RenderCamera设置为UI相机 新建3D物体的UI父物体&#xff0c;并将3D物体的层级设置为UI层 适当的放缩3DObjParent&#xff0c;让3D物体能显示出来…

“鞋履数据库”:运动鞋店产品信息管理系统

2.1 SSM框架介绍 本课题程序开发使用到的框架技术&#xff0c;英文名称缩写是SSM&#xff0c;在JavaWeb开发中使用的流行框架有SSH、SSM、SpringMVC等&#xff0c;作为一个课题程序采用SSH框架也可以&#xff0c;SSM框架也可以&#xff0c;SpringMVC也可以。SSH框架是属于重量级…

[源码解析] 模型并行分布式训练Megatron (2) --- 整体架构

link [源码解析] 模型并行分布式训练Megatron (2) --- 整体架构 目录 [源码解析] 模型并行分布式训练Megatron (2) --- 整体架构 0x00 摘要0x01 启动 1.1 分布式启动1.2 构造基础 1.2.1 获取模型1.2.2 获取数据集1.2.3 步进函数 1.2.3.1 广播数据0x02 Pretrain0x03 初始化 3.1 …

终章:DevOps实践总结报告

DevOps实践总结报告 一、概述 1. 报告目的 本报告旨在总结DevOps实践中的关键领域、最佳实践和实施成果&#xff0c;包括需求管理、持续集成/持续部署、测试管理、安全管理和效能度量等方面。 2. 覆盖范围 #mermaid-svg-L0xFFzMbiDH1qhbl {font-family:"trebuchet ms&…

【Go】Go数据类型详解—map

1. 前言 本篇博客将会介绍Go语言当中的另一大核心数据类型——map&#xff08;映射&#xff09;&#xff0c;当然在介绍这个数据类型之前我们还是要思考引入这个数据类型的原因&#xff1a; ❓ 需求&#xff1a;要求完成对一个班级所有同学的信息管理&#xff08;包括但不限于…

自动驾驶---Parking端到端架构

​​​​​​1 背景 自动泊车也是智能驾驶低速功能中比较重要的一部分&#xff0c;低速功能其中还包括记忆泊车&#xff0c;代客泊车等。传统的泊车算法通常使用基于规则或者搜索优化的方案来实现。然而&#xff0c;由于算法的复杂设计&#xff0c;这些方法在复杂的泊车场景中效…

windows 默认的消息ID有那些---我与大模型对话

前言&#xff1a; 与大模型交流&#xff0c;提问要尽量简短&#xff0c;突出关键词。否则它的回答就可能事是而非。用它总结和查资料还行&#xff0c;用它解决问题路还很远。它非常注重标准格式并机械的执行标准格式&#xff0c;并且事无巨细&#xff0c;不能灵活简要的回答问…

USB接口实现CDC(usb转串口功能)

主控&#xff1a;stm32f429 PHY芯片&#xff1a;usb3320 Cubemx System Core-RCC connectivity-USB_OTG_HS Middleware and Software Packs-USB_DEVICE 时钟配置&#xff1a;根据自己使用的MCU工作频率设置 Generate Code Keil5 打开工程 usbd_cdc_if.c这个文件&…

软件测试框架有什么作用?好用的测试框架分享

在当今软件开发中&#xff0c;软件测试框架扮演着至关重要的角色。测试框架是指用于支持自动化测试及测试管理的环境或平台。它提供了一系列的规则、标准和工具&#xff0c;以确保软件产品的质量。框架涵盖了测试的所有层面&#xff0c;包括单元测试、集成测试和系统测试等。更…

【笔记】如何在ubuntu中设置静态ip地址

连接finalshell发现ip地址总变连接起来十分的麻烦 首先是进入ubuntu的网络配置文件 sudo vim /etc/netplan/01-network-manager-all.yaml 默认只有前面那三行 后面的需要自己添加 network: version: 2 renderer: NetworkManager ethernets: ens33: dhcp4:…