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. common lisp的宏的工作模式

    (defmacro our-expander (name) ‘(get ,name ’expander))(defmacro our-defmacro (name parms &body bo ...

  2. 修改Jupyter notebook的启动目录

    修改Jupyter notebook的启动目录 1. 在控制台输入以下命令,检查Jupyter notebook的安装目录 jupyter notebook --generate-config ​ 如 ...

  3. 理解Java包

    本质上,包是一个唯一命名的类的集合,将类集合到包里面的主要原因,是为了当在应用程序中使用预先编写的类时避免与类自身可能引起的明明冲突.用于包中的类名不会妨碍另一个包或程序中的类名,因为此时,包中的类名 ...

  4. SSH框架的多表查询和增删查改 (方法一)中

    原创作品,允许转载,转载时请务必标明作者信息和声明本文章==>http://www.cnblogs.com/zhu520/p/7774144.html   这边文章是接的刚刚前一遍的基础上敲的  ...

  5. transform的影响

    http://www.cnblogs.com/chuangweili/p/5167986.html transform 各种影响 1.提升元素的z-index层级,下面这个例子会让前面的图片显示在上面 ...

  6. grid 布局 CSS3

    display:grid 是一种新的布局方式,旧的布局方式通常有副作用,例如float(需要额外修复浮动)或者inline-block(两个元素之间的空格问题)   把父元素定义为grid,就像表格一 ...

  7. 简单类型对象 String

    简单值不是对象,因此也没有属性方法,因此运行下面代码时   var s1 = “some text”; var s2 = s1.substring(2);   实际上是运行在read模式,字符串的值会 ...

  8. Python学习--列表和元组

    在python中,最基本的数据结构是序列.序列中的每个元素被分配一个序号--即元素的位置,也称为索引.第一个索引是0. python包含6种内建的序列:列表.元组.字符串.Unicode字符串.buf ...

  9. [转载] Netty教程

    转载自http://blog.csdn.net/kobejayandy/article/details/11493717 先啰嗦两句,如果你还不知道Netty是做什么的能做什么.那可以先简单的搜索了解 ...

  10. 用StringBuilder和StringBuffer实现的Unicode解码方法的比较(Java)

    初衷是用正则来写一个Unicode字符串转码的方法,一开始是打算结合StringBuilder写的,但是看到jdk7的Matcher.appendReplacement文档中一段示例代码用了Match ...