WPF编程基础入门 ——— 第一章 引言

介绍

WPF(Windows Presentation Foundation)是微软推出的基于Windows的用户界面框架,属于.NET Framework 3.0的一部分。专门用来编写程序表示层的技术和工具,它提供了统一的编程模型、语言和框架,真正做到了分离界面设计人员与开发人员的工作;同时它提供了全新的多媒体交互用户图形界面。使用WPF编写的程序比之前的WinForm程序更加简洁清晰。WPF技术适用于微软平台下的桌面系统、浏览器的开发。
WPF需运行于.NET Framework 3.0以上版本,并且支持DirectX9/10技术。


XAML 编程模型

XAML(eXtensible Application Markup Language),被称为可扩展应用程序标记语言。它是微软公司为构建应用程序用户界面而创建的一种新的描述性语言。它类似于HTML(Hyper Text Markup Language)超文本标记语言,继承了Web开发的特性。XAML提供了一种便于扩展和定位的语法来定义和程序逻辑分离的用户界面,而这种实现方式和ASP.NET中的"代码后置"模型非常类似。XAML是一种解析性的语言,尽管它也可以被编译。它的优点是简化编程式上的用户创建过程,应用时要添加代码和配置等。


HTML 与 XAML 的区别

HTML

<html>
	<head>
		<title> hello Everyone </title>
	</head>
	<body>
		<p> Welcome to HTML </p>
	</body>
</html>

在WPF中,使用XAML的标记格式,它与HTML在语法结构上有许多相似之处,但两者之间最显著的不同特征是:xmIns指令和标记扩展。
其中xmls指令.需要在标记中关联名称空间,在文本文件中即可创建XAML标签。
XAML

<FlowDocument
	xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
	<Paragraph>Welcome to XAML</Paragraph>
</FlowDocument>

HTML与XAML的区别

由于WPF具有xmIns 指令,需要在标记中关联名称空间,故Microsoft的. NETFramework 3.0就已经具有XAML的编程模型,支持XML(eXtensible Markup Language,可扩展置标语言)语法,对界面进行解释。因此,XAML可以视为针对CLR(CommonLanguage Runtime,公共语言运行环境)对象编写。它基于XML的脚本语言,根据映射规则将XML标签转换为CLR类型,并把XML属性转换为CLR属性和事件。在后续的章节中,展开讲解使用XAML和C#创建对象并设置其属性的方法。


WPF 特性

创建一个WPF项目

使用Visual Studio 2019创建一个WPF项目(需要C#和.NET的一系列模块)
创建项目设置WPF项目配置项目

布局与控件

<StackPanel> 演示 仅编写 MainWindow.xaml 部分

<Window x:Class="WpfApp1.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:WpfApp1"
        mc:Ignorable="d"
        Title="MainWindow" Height="200" Width="400">
    <StackPanel>
        <Button>First Button</Button>
        <Button>Second Button</Button>
        <TextBox> I AM A TEXTBOX</TextBox>
        <TextBlock>I am a textblock</TextBlock>
    </StackPanel>
</Window>

StackPanel
<WrapPanel> 演示

<Window x:Class="WpfApp1.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:WpfApp1"
        mc:Ignorable="d"
        Title="MainWindow" Height="200" Width="400">
    <WrapPanel>
        <Button>First Button</Button>
        <Button>Second Button</Button>
        <TextBox> I AM A TEXTBOX</TextBox>
        <TextBlock>I am a textblock</TextBlock>
    </WrapPanel>
</Window>

WrapPanel

其中的Panel标签为布局,Button与Text…为控件,以上仅仅是两个演示案例,其他的布局和控件都会在后面的教程之中提及到。

数据集成及处理能力

数据绑定机制
以上面的WpfApp1示例之中的Button控件来举例,Button可绑定类型有三种。
第一、绑定类型决定按钮的显示方式,所有的控件都有一个资源(Resources)属性。Resources之中包括样式(Style)、模板(Template)、资源字典(Resource Dictionary)。
第二、按钮的数据类型是System。Object对象,按钮能获取任何数据(包括图片),并显示设置的内容。WPF的许多控件核心就是Content Model(内容模型)机制。
第三、通过数据绑定来实现内容模型。
其他
绘制2D图形
绘制3D图形
为3D模型设置动画效果
设置控件的样式


WPF 与 UWP

微软于2006年发布WPF,截至2016年,微软在我国已陆续推出了UWP(UniversalWindows Platform)应用,不过初始版本很简陋。
UWP即Windows 10中的Universal Windows Platform简称,即Windows通用应用平台,在Windows 10 Mobile/Surface(Windows平板电脑)/PC/Xbox/HoloLens等平台上运行,UWP不同于传统PC上的EXE应用,它与只适用于手机端的APP有着本质的区别。由它的名字就可以知道,它并不是为某一个终端而设计的,而是可以在所有Windows10设备上运行的。
(1) WPF已经是比较成熟的技术,而UWP支持多种设备。
(2) WPF所有的操作都不依赖于GDI(Graphics Device Interface,图形设备界面)和GDI+,而是间接依赖于强大的DirectX,这就意味着通过WPF可以做出以前用WinForm无法想象的视觉效果,包括3D效果的应用程序。UwP作为Windows通用应用平台,随着其应用产品的开发,也将慢慢凸显出其优势。
(3) WPF彻底把程序架构、业务逻辑和用户界面(UI)分离开。WPF引擎把XAML描述的UI元素解释为相应的.NET对象,从而在应用程序创建相应的控件,UI人员和程序人员均可对此控件进行编辑加载,实现用户界面和程序架构的彻底分离,而微软的WinForm做不到。WPF是成熟的技术,是UWP开发的基础。


小结

这是WPF编程基础的开篇部分,也是我本人在学习WPF过程之中的个人记录,其中的示例和部分概念来自于清华大学出版社所出版的《WPF编程基础》与网络各类资料,在此与各位想要一起学习WPF的人士共勉。


相关阅读
下一篇:WPF编程基础入门 ——— 第二章 XAML.
WPF编程基础入门 ——— 目录导航.

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

W.Lionel.Esaka

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值