一,什么是WPF

WPF(Windows Presentation Foundation)翻译为中文“Windows呈现基础” 是微软新发布的Vista操作系统的三个核心开发库之一,是微软推出的基于Windows Vista的用户界面框架,属于.NET Framework 3.0的一部分。它提供了统一的编程模型、语言和框架,真正做到了分离界面设计人员与开发人员的工作;同时它提供了全新的多媒体交互用户图形界面。

二,WPF有关知识

首先说一下学习WPF的基础知识:

  1. 要会一门.NET所支持的编程语言。例如C#。

  2. 会一点“标准通用标记语言”:WPF窗体程序使用的XAML语言,也属于“标准通用标记语言”的一个分支。如果以前接触过XML、HTML、XHTML、ASP.NET之类的“标准通用标记语言”,对于学习是有所帮助的。

  3. 有一定的WinForm或ASP.NET经验,主要是对控件事件的处理要有所了解。

  4. 拥有良好的面向对象的思想:在WPF中,经常要灵活运用各种继承关系、多态、重载等。

  5. DataBinding要有所了解:Binding是WPF的一大亮点。

  6. 对设计模式要有一定的了解:当然是越深入越好了,在实际项目中,各种设计模式经常交融使用。

三,WPF的特点

优点:

  1. MVVM模式,数据和视图分离
  2. 类库多,上手快,可以快速开发
  3. 灵活的控件组合,可以修改已经存在的控件的外观
  4. 可以应用不同样式不同的控件,易于管理
  5. 支持动画,高级图形,高级数据绑定,3D等功能
  6. 绚丽的展示效果WPF除了可以使用传统的Windows Installer以及ClickOnce方式来发布我们的桌面应用程序之外,还可以将我们的应用程序稍加改动发布为基于浏览器的应用程序。

缺点:

  1. 对微软系统依赖性太强 到了非微软的操作系统上,很多FrameWord里面的类库就不好使了。
  2. 技术更新速度快
    移动和硬件领域的乏力,c/c++/java在移动领域和硬件领域的开发优势,是不用多说的----你见过几个公司,选择用c#来开发移动系统或者硬件驱动的?

四,WPF和Winfrom的区别

在两者最重要的区别,WinFrom只是标准窗体控件顶部的一层(如文本框),而WPF从零凯斯,几乎在所有场景下都不依赖于标准窗体控件

举一个很好的栗子,现在有一个带图片和文字的按钮。它并不是一个标准窗体控件,WinForms无法提供现成的,你不得不自己画图片,实现支持图像的按钮,或使用第三方控件。相反,在WPF,按钮可以包含任何东西,因为它本质上是一个带内容和不同状态的边框。WPF的按钮就好像是一个看不见的物体,可以放入各种其他控件到里面,不部分WPF控件都是如此。你是想要一个带图片和文字的按钮?很简单,只要把一张图片和一个文本块放到按钮里面就搞定了。在标准WinForms控件之外好像你找不到这种灵巧的方式,这就是为什么像带图片的按钮这种简单的控件实现会有如此大市场的原因。

WPF优势

  1. 比较新,从而更符合目前的标准。
  2. 微软正在使用它开发很多新应用,比如Visual Studio。
  3. 更灵活,你不必再去自己写控件或者买控件。
  4. 你所使用的第三方控件更多的聚焦在WPF上,因为它比较新。
  5. XAML使得GUI的创建和编辑更加容易,而且允许拆分设计器(XAML)和代码器(C#, VB.NET).
  6. 数据绑定,你可以更加彻底的分离数据和布局.
  7. 用硬件加速绘制图形用户界面,性能更好。
  8. 允许你在Windows应用和web应用之间进行用户交互。

WinForms优势

  1. 出现比较久,已经经历很多检验和测试。
  2. 已经有很多第三方控件供你购买或者免费使用。
  3. Visual Studio设计器仍然更适合WinForms,在WPF很多东西你还是需要自己去开发。

五,开发基础

  1. 新建WPF应用程序
    选择菜单->“文件”->“新建”->“项目”,在“新建项目”对话框中选择WPF应用程序,修改名称为WpfDemo,然后点击“确定”按钮,如下图所示:
  2. 生成的文档接口图如下:
  3. 在App.xaml中的“StartupUri”属性可以指定项目运行时的启动窗体。如下图中“StartupUri=”MainWindow.xaml””,还可以定义我们需要的系统资源以及引入程序集等,如下图所示:

六,XAML语言

XAML语言:是微软公司为构建应用程序用户界面而创建的一种新的“可扩展应用程序标记语言”,提供了一种便于扩展和定位的语法来定义和程序逻辑分离的用户界面。

特点:
定义应用程序的界面元素
显示的声明WPF资源(样式、模板、动画等)
可扩展性(自定义UI控件)
集中关注于界面的设计和实现

七,XAML命名空间以及命名空间映射到程序集

1. XAML命名空间

开发语言会将常用功能以类的形式封装,开发人员根据自己的业务需求,也会封装满足自身业务需求的类,如果有序组织这些类?一方面,便于开发人员准确调用;另一方面,编译器可以有效识别具有相同命名的类,就引入了命名空间,简单的说,是通过类似树状结构来组织各种类,是一种较为有效的类名排列方式。

而XAML和.NET其他语言一样,也是通过命名空间有效组织起XAML内部的相关元素类,这里的命名空间与.NET中的命名空间不是一一对应的,而是一对多,一眼望去,都是“网址”,这里的网址,是遵循XAML解析器标准的命名规则,而不是真正的网址(在IE中根本打不开)。
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"对应一些与XAML语法和编译相关的CLR名称空间,例如

< Style x:key=“buttonMouseOver” TargetType="{x:Type Button}">
这里的xmlns和xmlns:x的区别在于x作为别名,在应用时,以前缀形式出现,而xmlns作为默认命名空间,不使用前缀标识的元素,来自该命名空间。

XAML命名空间的语法:

xmlns[:可选映射前缀]=“命名空间描述”
注意:没有加可选映射前缀的xmlns是WPF默认的命名空间,一个xaml文件只能有一个默认的命名空间
一个完整的xaml文件,必须具备两个命名空间。

2、自定义类或程序集映射语法

xmlns[:必选映射前缀]=“clr-namespace:[命名空间];assembly=[程序集名称]”

在同一个解决方案下面新建一个“”的项目,命名为“WPFUserControl”,在项目的属性里面修改默认

的命名空间为:MyControl.WpfUserControl,添加两个TextBlock和两个TextBox,如图所示:

在第一个项目里面引用新建的用户控件,注意:首先要添加新建用户控件库的引用。

3、映射到当前程序集的语法
xmlns[:必选映射前缀]=“clr-namespace:[命名空间]”
在当前项目下面新建一个用户控件,添加两个TextBlock和两个TextBox,如下图所示:

在MainWindow.xaml里面调用新建的用户控件,需要引用命名空间:

资料来源https://www.jianshu.com/p/4668a237d0fa
资料来源https://blog.csdn.net/seanbei/article/details/52601089

什么是WPF,对WPF的认识相关推荐

  1. 【WPF】WPF 常用控件

    目录 一.WPF的概述 1.1 WPF 简介 1.2 WPF 特点 二.XAML 2.1 对象元素语法 2.2 XAML 根元素 2.3 WPF 和 XAML 命名空间声明 三.控件的继承关系 四.常 ...

  2. WPF:WPF显示PDF文档 之 编译 MoonPdfLib库

    简述   在之前一篇文章中,我讲述了如何使用WPF显示PDF文档,开发环境是VS2013 + .Net FrameWork4.5 + x64.因为后面我使用了.Net FrameWork 4.6.1, ...

  3. 【转】【WPF】WPF样式(Style)—触发器

    样式(Styles)由三部分构成:设置器(Setter).触发器(Triggers).资源(Resources). (1)触发器,让样式的使用更加准确.灵活和高效. (2)触发器(Triggers)主 ...

  4. WPF:WPF显示PDF文档

    简述   软件的帮助文档可借助第三方软件如PDF Reader.Adobe PDF等显示,但客户机上需安装此类软件.WPF开发的软件可借助第三方库 MoonPdf 将PDF文档加载显示到软件窗口中(D ...

  5. 【WPF】WPF中调用Winform

    1.添加两个引用:WindowsFormsIntegration.dll(负责整合WPF和Windows).System.Windows.Forms. 2.在 XAML文件中添加两个引用(粗体部分): ...

  6. 【WPF】WPF DataGrid List数据源 双向绑定通知机制之ObservableCollection使用以及MultiBinding 的应用...

    以下代码实现了DataGrid的简单绑定List数据源 重点要提一下的是,绑定List数据源,但是不能直接用List.比如下面的代码,使用List<GridItem>只能实现数据修改的绑定 ...

  7. 【WPF】WPF 命令

    命令将操作的语义和发起方与其逻辑分开. 这使得多个完全不同的源可以调用相同的命令逻辑,并使得可以针对不同的目标对命令逻辑进行自定义. 命令的语义在所有的应用程序和类中是一致的,但是操作的逻辑是所作用于 ...

  8. wpf初学者-wpf控件简单介绍

    本文大纲 1.基本控件介绍与用法. 基本控件介绍与用法 文本控件 Label控件 label控件:一般用户描述性文字显示. 在Label控件使用时,一般给予用户提示.用法上没有什么很特殊的,label ...

  9. html特效 wpf,利用WPF实现一个简单的文字粒子闪烁动画特效

    利用WPF实现一个简单的文字粒子闪烁动画特效 发布时间:2020-11-06 16:04:19 来源:亿速云 阅读:124 作者:Leah 本篇文章给大家分享的是有关利用WPF实现一个简单的文字粒子闪 ...

  10. WPF开发经验-WPF的TextBox控件的MouseDown事件不响应的解决方法

    一 问题的发现 最近项目有个需求,大概是,当点击某个TextBox时,先执行一些业务上的逻辑处理. 于是按以往思维,将TextBox的MouseDown事件关联事件处理方法,将业务处理写在方法里. 调 ...

最新文章

  1. java excel读取操作,Java读取Excel并操作
  2. uniGUI试用笔记(十一)
  3. java跨库join方案_集算器协助java处理多样性数据源之跨库关联
  4. 【渝粤题库】国家开放大学2021春1258房屋建筑混凝土结构设计题目
  5. 元素凸起效果_被誉为作物“生殖元素”的“硼”到底有多重要?看完你就明白了...
  6. Maven如何将别人的项目导入到自己的eclipse并使用
  7. 宝马屏幕共享android,宝马屏幕共享功能怎么用
  8. 曾国藩的做人做事之道:事不拖,话不多,人不作
  9. 腾讯云https证书部署nginx
  10. 说说 iphone 数据线(充电线) 原装正品和仿制品、假货等的区别
  11. python中简述对象和类的关系_Python笔记-习题42 对象、类及从属关系
  12. 自定义select标签
  13. 帝国cms根据标题生成标题图片插件
  14. 4t硬盘实际容量是多少_怎么对大容量硬盘(例如4T硬盘)进行查看并分区
  15. mysql 分钟_MySQL如何获取一个指定时间中的分钟数(MINUTE函数)呢?
  16. 图像处理-特征融合:相加、拼接、Attention
  17. 基于JAVA房产中介预约看房系统设计与实现 开题报告
  18. TCP 滑动窗口是个什么东西?这篇讲清楚
  19. Combinatorial Games
  20. 手机闪存速度排行_内置UFS2.1:小米9手机闪存速度测试

热门文章

  1. 不要经常让别人抄袭你的报告,否则他们会学会Word排版的艺术
  2. vst3插件_福利:全部免费啦,JHudStudio音频效果器插件全部免费
  3. 职称计算机考试excel内容,2020年职称计算机考试EXCEL试题练习
  4. 2022电工杯B题思路模型分析
  5. Android Launcher 应用开发
  6. linux操作系统实训心得总结,操作系统实验报告心得体会
  7. linux232转usb接口驱动程序,USB转RS232串口驱动程序下载
  8. 开机未发现nvidia控制面板_nvidia控制面板打不开如何解决_nvidia控制面板点了没反应...
  9. 小米路由器mini 刷潘多拉固件教程
  10. MATLAB图像处理之图像去模糊处理