2022年5月6日【Jiawei_Z】C#公众号文章学习记录[从入门到放弃--软件安装&初识XAML]01

WPF也是我今年刚开始深入去了解,看了不少的学习视频和书籍,受剑神Python入门到放弃的启发,想把这段时间学习内容做个总结,一是因为我相信技术总是需要不断的总结与练习才能有所进步,二是希望帮助初学者对WPF有个初步的了解,大家一起探讨学习进步。

不由得感叹时间过得真快,剑神的Python入门到放弃已经完结(从1.21到6.2日小半年又过去了),虽然现在python很火,恕我直言,工控圈在应用上还是用C#比较多,因为工控用windows系统比较多(当然服务器端与大型信息化系统要除外了),与下层控制系统通讯,C#以其容易上手以及对各种通讯库的支持,让我们这些不是计算机专业的人,也能享受编程乐趣,作为一个曾经做过PLC编程,组态软件开发的人,并未做过真正的上位机开发。

软件安装

https://mp.weixin.qq.com/s/wvLxNr7VGdBCEvSjc53mEg
原文地址
说明:
本文主要介绍WPF(Windows Presentation Foundation),是微软推出的一项基于windows操作系统、.NET平台的C/S客户端构建技术。
2022年5月6日【Jiawei_Z】C#公众号文章学习记录[从入门到放弃--软件安装&初识XAML]01_第1张图片
2022年5月6日【Jiawei_Z】C#公众号文章学习记录[从入门到放弃--软件安装&初识XAML]01_第2张图片
2022年5月6日【Jiawei_Z】C#公众号文章学习记录[从入门到放弃--软件安装&初识XAML]01_第3张图片
2022年5月6日【Jiawei_Z】C#公众号文章学习记录[从入门到放弃--软件安装&初识XAML]01_第4张图片
2022年5月6日【Jiawei_Z】C#公众号文章学习记录[从入门到放弃--软件安装&初识XAML]01_第5张图片

2022年5月6日【Jiawei_Z】C#公众号文章学习记录[从入门到放弃--软件安装&初识XAML]01_第6张图片

上面一段代码是自动生成的,让我们来分解此XAML代码,以便更好地了解它。

首先是最外层代表着一个元素,代表整个窗口,
代表着一个< Grid >元素,可以放置所有的控件。总体结构其实是一个窗体对象内嵌套一个Grid对象。

xmlns是xml-namespace的缩写,是用来定义名称空间的,当来源不同的类重名时,可以使用名称空间加以区分。xmlns后可以跟一个可选的映射前缀,之间用冒号分割。

xmlns=“http://schemas.microsoft.com/winfx/2006/xaml/presentation” 是默认名称空间,这种不带映射前缀的名称空间只能有一个,一般选用元素最频繁使用的名称空间。< Grid >等常见元素都来自于这个名称空间。

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"这个名称空间与解析XAML语言相关。x:Class 向为 XAML 页提供代码隐藏的类指定 CLR 命名空间和类名。必须具有这样一个类才能支持每个 WPF 编程模型的代码隐藏, 本项目此特性将 映射到代码定义的类型HelloWord.MainWindow类。

xmlns:d=“http://schemas.microsoft.com/expression/blend/2008”

xmlns:mc=“http://schemas.openxmlformats.org/markup-compatibility/2006”

mc:Ignorable=“d”

这三个作用是:可将 d: 置于任何特性或控件之前,使其仅在 XAML 设计器中显示,而不在运行时显示。

xmlns:local=“clr-namespace:HelloWord” 这将名称空间HelloWord映射到前缀local,在XAML中使用您在名称空间HelloWord中的代码中定义的类或属性之一,则应该在其前面加上local:,以便XAML解析器理解它。这个用于将代码中自定义类在xaml文件中使用。

Title=“MainWindow” Height=“450” Width=“800” 这里就比较容易理解了,主要设置Window标签的窗口的标题,高度,宽度。

下面做一些测试理解上面的内容。

先将x:Class="HelloWord.MainWindow"这段代码去掉,
2022年5月6日【Jiawei_Z】C#公众号文章学习记录[从入门到放弃--软件安装&初识XAML]01_第7张图片
点击运行程序按钮,运行显示错误。
2022年5月6日【Jiawei_Z】C#公众号文章学习记录[从入门到放弃--软件安装&初识XAML]01_第8张图片
但在错误列表中,并没有错误提示,说明没有这个x:Class="HelloWord.MainWindow"系统认为也是可以的。
2022年5月6日【Jiawei_Z】C#公众号文章学习记录[从入门到放弃--软件安装&初识XAML]01_第9张图片
把程序中InitializeComponent();屏蔽掉后程序也是可以正常运行的。因为InitializeComponent();是x:Class=“HelloWord.MainWindow” 默认生成的构造函数。

2022年5月6日【Jiawei_Z】C#公众号文章学习记录[从入门到放弃--软件安装&初识XAML]01_第10张图片
当把先将x:Class="HelloWord.MainWindow"改成x:Class=“HelloWord.MyWindow” 会提示InitializeComponent不存在,虽然代码中有这段代码
2022年5月6日【Jiawei_Z】C#公众号文章学习记录[从入门到放弃--软件安装&初识XAML]01_第11张图片
这时候用ILSpy反编译工具,将HelloWord.dll放到ILSpy反编译看,HelloWord这个名称空间下多了一个MyWindow类,里面默认生成一个InitializeComponent构造函数

2022年5月6日【Jiawei_Z】C#公众号文章学习记录[从入门到放弃--软件安装&初识XAML]01_第12张图片
2022年5月6日【Jiawei_Z】C#公众号文章学习记录[从入门到放弃--软件安装&初识XAML]01_第13张图片

下面我们先建一个按钮:

<Button  d:Content="剑指工控" FontSize="50" Margin="100"  />

d:Content=“剑指工控” 这个只在设计中显示,实际运行并不显示。
2022年5月6日【Jiawei_Z】C#公众号文章学习记录[从入门到放弃--软件安装&初识XAML]01_第14张图片
下面看一下如何将C#中的类如何在xaml中使用。

先添加一个Students类
2022年5月6日【Jiawei_Z】C#公众号文章学习记录[从入门到放弃--软件安装&初识XAML]01_第15张图片
2022年5月6日【Jiawei_Z】C#公众号文章学习记录[从入门到放弃--软件安装&初识XAML]01_第16张图片
使用local:后面出现APP,MainWindow这两个默认的类以及我们新建的Students这个类。
2022年5月6日【Jiawei_Z】C#公众号文章学习记录[从入门到放弃--软件安装&初识XAML]01_第17张图片
2022年5月6日【Jiawei_Z】C#公众号文章学习记录[从入门到放弃--软件安装&初识XAML]01_第18张图片
2022年5月6日【Jiawei_Z】C#公众号文章学习记录[从入门到放弃--软件安装&初识XAML]01_第19张图片

你可能感兴趣的:(C#上位机开发,c#,wpf)