WPF入门(1)
开始对WPF动手,从0开始一步一步深入学习
1)参考文档:msdn、《WPF编程宝典:使用C#2012和NET 4.5 第4版》
2)开发工具:Microsoft Visual Studio Enterprise 2019 Version 16.3.10——en-US(说白了就是跟着最新版一直更新就OK了)
3)Framework:.NET Core 3.0(好像WPF只有2019下才能使用.NET Core,其它Visual Studio版本的开发人员还是选择.NET Framework 4.5吧,跟参考书一致,避免意外问题)
3)第一个项目(Hello World):
1、vs2019打开后,选择Create a new project,

弹出窗体选择模板WPF APP(.NET Core)

输入解决项目名称、项目路径和解决方案名称,点击Create

2、添加一个Button控件和一个TextBox控件,修改TextBox名称为txtContent,双击Button控件进入代码编辑,又是熟悉的后台C#代码编辑模式了!窗体设计界面及后台代码如下图:



至此,代码编辑完毕,F5一下,界面和结果一如既往的熟悉,Hello World好久不见,调试运行结果如下图:


4)代码分析
后台代码实在是太简单了,就不多分析了,只要有C#基础的都明白(没C#基础的请自行学习),这里就只分析一下xmal代码和.NET Core在项目中的部分代码
xaml部分:
xaml简介:xaml是一种类似xml的界面交互设计语言,它比xml高级(above xml -> xaml),语法类似于ASP.NET
源代码是这样的
<Window x:Class="Hello_World.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:Hello_World"
mc:Ignorable="d"
Title="MainWindow" Height="" Width="">
<Grid>
<Button Content="Button" HorizontalAlignment="Left" Margin="326,338,0,0" VerticalAlignment="Top" Height="" Width="" Click="Button_Click"/>
<TextBox x:Name="txtContent" HorizontalAlignment="Left" Margin="298,266,0,0" Text="TextBox" TextWrapping="Wrap" VerticalAlignment="Top" Width="" Height=""/>
</Grid>
</Window>
这段代码的意思基本上就是有这么一个Window,Window里放置了一个Grid,Grid里放置了一个Button和一个TextBox
其中Window的属性标签中x:Class="Hello_World.MainWindow"代表这个Window和后台代码中的Hello_World.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:Hello_World",以上这些都是xml的namespace,一般都不用动,用到时引入就行,记不住的话please Baidu,剩下的属性没啥可说的了,就是Title、Height、Width、Content之类的了,自己改改试试就知道是做什么的了,唯一说一点的是这些属性都可以用类似Winform的控件的属性设计器进行修改
<Application x:Class="Hello_World.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Hello_World"
StartupUri="MainWindow.xaml">
<Application.Resources> </Application.Resources>
</Application>
这段代码在App.xaml中,相当于winform程序中的Program.cs的地位,它指示了最终编译后的程序启动后会进入哪个界面(StartupUri="MainWindow.xaml"),同时也为自己新建了一个类
.NET Core部分:
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop"> <PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>netcoreapp3.</TargetFramework>
<RootNamespace>Hello_World</RootNamespace>
<UseWPF>true</UseWPF>
</PropertyGroup> </Project>
其实就是项目的一些属性和信息,指定了部分配置项目,看内容就知道意思了,一个是项目输出类型(OutputType),一个是项目目标框架(TargetFramework),一个是根命名空间(RootNamespace),最后一个是指定使用.NET Core的WPF配置项(UseWPF)
WPF入门(1)的更多相关文章
- WPF入门:数据绑定
上一篇我们将XAML大概做了个了解 ,这篇将继续学习WPF数据绑定的相关内容 数据源与控件的Binding Binding作为数据传送UI的通道,通过INotityPropertyChanged接口的 ...
- WPF入门教程系列二十三——DataGrid示例(三)
DataGrid的选择模式 默认情况下,DataGrid 的选择模式为“全行选择”,并且可以同时选择多行(如下图所示),我们可以通过SelectionMode 和SelectionUnit 属性来修改 ...
- WPF入门教程系列三——Application介绍(续)
接上文WPF入门教程系列二——Application介绍,我们继续来学习Application 三.WPF应用程序的关闭 WPF应用程序的关闭只有在应用程序的 Shutdown 方法被调用时,应用程序 ...
- WPF入门教程系列二——Application介绍
一.Application介绍 WPF和WinForm 很相似, WPF与WinForm一样有一个 Application对象来进行一些全局的行为和操作,并且每个 Domain (应用程序域)中仅且只 ...
- WPF入门教程系列(二) 深入剖析WPF Binding的使用方法
WPF入门教程系列(二) 深入剖析WPF Binding的使用方法 同一个对象(特指System.Windows.DependencyObject的子类)的同一种属性(特指DependencyProp ...
- WPF入门教程系列(一) 创建你的第一个WPF项目
WPF入门教程系列(一) 创建你的第一个WPF项目 WPF基础知识 快速学习绝不是从零学起的,良好的基础是快速入手的关键,下面先为大家摞列以下自己总结的学习WPF的几点基础知识: 1) C#基础语法知 ...
- WPF入门教程系列一
WPF入门教程 一. 前言 公司项目基于WPF开发,最近项目上线有点空闲时间写一篇基于wpf的基础教材,WPF也是近期才接触,学习WPF也是在网上查资料与微软的MSDN进行学习,写本博客的目为了温 ...
- WPF入门(四)->线形区域Path内容填充之填充图(ImageBrush)
原文:WPF入门(四)->线形区域Path内容填充之填充图(ImageBrush) 前面我们提到了LinearGradientBrush可以用来画渐变填充图,那么我们同时也可以使用ImageBr ...
- WPF入门(四)->线形区域Path内容填充之渐变色(LinearGradientBrush)
原文:WPF入门(四)->线形区域Path内容填充之渐变色(LinearGradientBrush) 前面我们介绍到,Path对象表示一个用直线或者曲线连接的图形,我们可以使用Path.Data ...
- WPF入门(三)->几何图形之不规则图形(PathGeometry) (2)
原文:WPF入门(三)->几何图形之不规则图形(PathGeometry) (2) 上一节我们介绍了PathGeometry中LineSegment是点与点之间绘制的一条直线,那么我们这一节来看 ...
随机推荐
- python+selenium 自动化测试框架-学习记录
本人小白一枚,想着把学习时的东西以博客的方式记录下来,文章中有不正确的地方请大佬多多指点!!共同学习 前期准备 安装python3.selenium.下载对应版本的webdriver:安装所需的第三 ...
- Java——动态创建Class(不写入文件,直接从内存中创建class)
原文:https://blog.csdn.net/zhao_xinhu/article/details/82499062#commentsedit 参考:https://www.cnblogs.com ...
- Java IO(七)ByteArrayInputStream 和 ByteArrayOutputStream
Java IO(七)ByteArrayInputStream 和 ByteArrayOutputStream 一.介绍 ByteArrayInputStream 和 ByteArrayOutputSt ...
- Bank4
Account: package banking4; public class Account { private double balance; public Account(double int_ ...
- OAuth + Security -1 - 认证服务器配置
配置 基础包依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId&g ...
- Rocket - util - Counters
https://mp.weixin.qq.com/s/q7R2Dn9p9cch_ABN4raReQ 介绍几种计数器的实现,以及其中的一点小细节. 1. ZCounter ...
- Rocket - diplomacy - enumerateBits
https://mp.weixin.qq.com/s/KsZqe9W_DM6W6JecK_irvA 介绍AddressSet.enumerateBits方法的实现,主要是x & (-x)的 ...
- (一)用less+gulp+requireJs 搭建项目(了解less)
项目完结 做个总结: 公司网站重构,整站都需要重写,终于有机会接触下 less,gulp和requireJs,因为以前的工作就是写几个活动页,并没有机会用这些工具,废话不多说,先看下完成后的项目目录: ...
- java启动RabbitMQ消息报异常解决办法
启动SpringCloud微服务,RabbitMQ报如下异常: 2019-08-12 18:15:49.543 ERROR 53096 --- [68.252.131:5672] o.s.a.r.c. ...
- 遇到Error:Execution failed for task ':app:transformClassesWithDexForDebug'的解决方案
原因:项目中包含了所有的google play service 解决:只需要使用必要的服务即可 将compile 'com.google.android.gms:play-services:8.1.0 ...