ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

WPF编程基础 (一)

2021-05-16 18:05:51  阅读:234  来源: 互联网

标签:控件 UWP Windows XAML 编程 基础 WPF Button


全新的图形用户系统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的人士共勉。

标签:控件,UWP,Windows,XAML,编程,基础,WPF,Button
来源: https://blog.csdn.net/m0_46334316/article/details/116895743

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有