WPF,全名是Windows Presentation Foundation,是微软在.net3.0 WinFX中提出的。WPF是对Direct3D的托管封装,它的图形表现依赖于显卡。当然,作为一种更高层次的封装,对于硬件本身不支持的一些图形特效的硬实现,WPF提供了利用CPU进行计算的软实现,用以简化开发人员的工作。
 
以前图像系统基于:
  User32 提供window应用程序的组成元素。
  GDI/GDI+提供绘图api
 
wpf基于
  DirectX 是由微软公司创建的多媒体编程接口。由C++编程语言实现,遵循COM。被广泛使用于Microsoft Windows、Microsoft XBOX、Microsoft XBOX 360和Microsoft XBOX ONE电子游戏开发
  也依赖于User32
   
 
 
层次
  wpf核心命名空间都已 System.Windows开始。比如
    System.Windows
    System.Windows.Controls
    System.Windows.Media
    System.Windows.Forms 这个是Windows from 编程工具箱的一部分
 
 
System.Threading.DispatcherObject
  单线程应用程序模型(STA) 用户界面将会被宿主到一个单一的线程。如果有其他线程与用户界面元素交互,会产生不安全的影响。为了简化这个模型。wpf使用一个位派遣者的对象来整理消息。由此产生出键盘输入,鼠标移动以及框架处理 通过 dispatcherOjbect派生子类,应用程序的界面可以检查代码是否执行在正确的线程上 并且访问派遣这来整理代码到用户界面线程
 
System.windows.dependencyObject
  通过属性来与界面元素交互。wpf中的双向数据绑定,wpf中的属性是从 dependencyobject 类型派生出来的。
 
System.windows.media.visual
  visual类看成是一个图形对象。wpf中呈现的每个元素都是一个可视化对象。这些元素封装了绘图指令,图形如何被绘制的详细信息 比如裁剪 同名度不设置。 visual类也提供了在托管wpf api 和 milcore.dll 之间的连接。派生自visual的任何类都有能力呈现在窗口上
 
System.windows.UIElement
  定义了wpf的核心子系统,包括布局layout 输入input和事件event 焦点 等
 
System.windows.frameworkElement
  实现了很多在UIElement 仅仅定义的成员 比如 uielement 设置了wpf布局系统的基础,而frameworkElement 则包括几个关键的属性提供对布局系统的支持
 
System.windows.shapes.shape
  基本形状类
System.windows.controls.control
  控件是一种用于与用户进行交互的元素 比如 Textbox butten control类添加了一些属性比如设置字体 前景色 背景色 还对控件模板支持
 
System.windows.controls.contentControl
  是其他内容控件继承的类,用来呈现单块内容 派生自contentControl类有个content属性 content属性类型是object 因此可以防止内容没有限制 可以使用可扩展应用程序标记语言 (XAML) 或者代码来设置content
 
System.windows.controls.itemscontrol
  所有集合控件的基类 listbox treeview
system.windows.controls.panel
  所有布局容器面包的基类 布局面包能够使用指定的布局规则来排列放置于其中的一个或者多个子元素。这些容器面包是wpf布局系统的基础
 
 
工程目录
App.xaml & App.xaml.cs
  这两个文件是wpf应用程序的应用程序入口点,也就是wpf中的application类的实例化表示,在每个wpf应用程序中,只能有一个application类存在。该类管理者wpf应用程序的声明周期。因此一个程序里只能有一个 App.xaml & App.xaml.cs App.xaml.cs是代码后置文件可以在该文件中完成很多系统初始化工作 和系统退出等
 
MainWindow.xaml & MainWindow.xaml.cs
  这是vs2015默认生成的窗体文件 一个wpf中可能有多个窗体。页面
 
  其实,App.xaml是可选的,但是必须在一个wpf应用程序中实例化一个Application单件类,一边管理应用程序的生命期。MainWindow.xaml以及代码后置文件也是可选的 可以痔疮就windows类的实例,交付给application类即可
 
 
start 类要有个Main方法
[STAThread]
public static void Main() {
Application app = new Application();
Windows1 win = new Window1();
win.Show();
app.Run();
}

  

Vs2015 自动创建的app.xaml并没有main方法,因为 在编译启动后 微软会自动给你创建个 App.g.cs 局部类 里面有Main方法
 
 
 
 
 
 
 

c# 初识WPF的更多相关文章

  1. WPF学习之路(一) 初识WPF

    参考<葵花宝典-WPF自学手册> VS2012 先创建第一个WPF小程序 1.创建WPF程序 2.查看Solution,WPF中xaml文件和cs文件经常成对出现 两个主要的类:APP(W ...

  2. WPF从入门到放弃系列第一章 初识WPF

    什么是WPF WPF(Windows Presentation Foundation)是微软推出的基于Windows Vista的用户界面框架,属于.NET Framework 3.0的一部分.它提供 ...

  3. 跟我一起学WPF(0):初识WPF

    WPF是什么 WPF是微软的新一代图形引擎系统,全称为Windows Presentation Foundation,从.NET3.0版本开始引入,为用户界面.2D/3D 图形.文档和媒体提供了统一的 ...

  4. WPF学习之路初识

    WPF学习之路初识   WPF 介绍 .NET Framework 4 .NET Framework 3.5 .NET Framework 3.0 Windows Presentation Found ...

  5. WPF之ViewModel

    写之前我先唠叨两句,现在公司要求用wpf写个客户端,我之前玩过winform,没怎么用wpf写过正经项目,我接手这个wpf项目之后就开始研究这个东西,MVVM,自定义控件,等等.可能是winfrom先 ...

  6. 从PRISM开始学WPF(二)Prism?

    目录: 从PRISM开始学WPF(一)WPF? 从PRISM开始学WPF(二)Prism? 从PRISM开始学WPF(三)Prism-Region? 从PRISM开始学WPF(四)Prism-Modu ...

  7. 从PRISM开始学WPF(二)Prism-更新至Prism7.1

    0x1 PRISM? PRISM项目地址:https://github.com/PrismLibrary/Prism 先看下简介: Prism is a framework for building ...

  8. .Net5 WPF快速入门系列教程

    一.概要 在工作中大家会遇到需要学习新的技术或者临时被抽调到新的项目当中进行开发.通常这样的情况比较紧急没有那么多的时间去看书学习.所以这里向wpf技术栈的开发者分享一套wpf教程,基于.net5框架 ...

  9. 学习WPF——初识依赖项属性

    入门 首先创建一个依赖项属性 然后绑定父容器的DataContext到这个依赖项的实例 接着绑定子元素的属性到依赖项属性(注意Button的Content属性) 程序最终的运行结果:   说明 首先是 ...

随机推荐

  1. Selenium Grid分布式测试入门详解

    本文对Selenium Grid进行了完整的介绍,从环境准备到使用Selenium Grid进行一次完整的多节点分布式测试. 运行环境为Windows 10,Selenium版本为 3.5.0,Chr ...

  2. TIDB技术文档翻译

    http://blog.csdn.net/antony9118/article/details/60470115

  3. Java:什么是面向对象?

    1.首先我们去区分对象的属性和方法. 一).什么是对象? 比如:所有的东西都可以叫做对象.而对象就是提供给我们研究对象,这就是对象. 二).怎么区分"属性"和"方法&qu ...

  4. js返回到上一个页面刷新与不刷新的写法

    返回上个页面刷新: <script>window.location.href=document.referer</script> 返回上个页面不刷新 <script> ...

  5. Leetcode题解(十二)

    33.Search in Rotated Sorted Array 题目 这道题目如果没有其他要求,直接遍历一遍就可以知道答案,但是,题目给出了是排序了数组,但是数组有可能经过了旋转得到,其解题思路仍 ...

  6. Linux 进程后台运行的几种方式(screen)

    Ctrl+z/bg/nohup/setsid/& 在Linux中,如果要让进程在后台运行,一般情况下,我们在命令后面加上&即可,实际上,这样是将命令放入到一个作业队列中了: ./rsy ...

  7. css响应式布局

    以设计稿为准,假设设计稿竖屏宽度为750px,取根元素的font-size为50px 在iphone6(375px)下,deviceWidth=7.5rem, 这个就是viewPort中的device ...

  8. Rem与Px的转换[转载]

    原文:http://www.w3cplus.com/preprocessor/sass-px-to-rem-with-mixin-and-function.html rem是CSS3中新增加的一个单位 ...

  9. 粗略整理的java面试题

    1.垃圾回收  是回收的空闲堆空间 只有在cpu空闲并且堆空间不足的情况下才回收 2.threadlocal  就是为线程的变量都提供了一个副本,每个线程运行都只是在更新这个副本. Threadloc ...

  10. day2--课前考试题

    Linux 系统命令操作语法的格式: 命令        [参数选项]          [文件或路径] rm                      -f                      ...