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. C++编译程序时的内存分配

    一个由C/C++编译的程序占用的内存分为以下几个部分 1.栈区(stack)— 程序运行时由编译器自动分配,存放函数的参数值,局部变量的值等.其操作方式类似于数据结构中的栈.程序结束时由编译器自动释放 ...

  2. HBase数据备份及恢复(导入导出)的常用方法

    一.说明 随着HBase在重要的商业系统中应用的大量增加,许多企业需要通过对它们的HBase集群建立健壮的备份和故障恢复机制来保证它们的企业(数据)资产.备份Hbase时的难点是其待备份的数据集可能非 ...

  3. Java 链表常见考题总结

    首先定义自定义结点类,存储节点信息: public class Node { Node next=null; int data; public Node(int data){ this.data=da ...

  4. Leetcode题解(十)

    29.Divide Two Integers 题目 题目要求不用乘除和取模运算,实现两个整数相除: 我的第一想法就是把除法变成减法来做,这也是最初除法的定义,其实现代码如下: class Soluti ...

  5. Azure ASM虚拟机部署“安全扩展”

    Azure虚拟机,默认情况下没有安装杀毒软件.如果您有此需求可以通过Azure 扩展进行安装,有关Azure反恶意软件的官方说明请参考:https://docs.azure.cn/zh-cn/secu ...

  6. 使用weinre远程调试

    1.调试环境: 1)使用nodejs搭建调试服务器: 先安装node,然后使用npm安装weinre,在node.js安装目录输入以下命令 npm install weinre 2)需要wifi环境和 ...

  7. arguments对象

    改变函数arguments也会改变对应的参数,arguments会自动映射到对应的参数上 但是改变参数并不会同步改变arguments 它们并不公用内存 在strict模式,不能对arguments付 ...

  8. zip 安装mysql 和遇到的坑

    在官网下载了mysql 社区版的,官方网址:https://dev.mysql.com/downloads/mysql/ 解压后发现里面没有安装快捷方式,才知道是zip解压,dos窗口安装.这就比界面 ...

  9. Django----中间件详解

    Django中间件 在http请求 到达视图函数之前   和视图函数return之后,django会根据自己的规则在合适的时机执行中间件中相应的方法. 中间件的执行流程 1.执行完所有的request ...

  10. Python把给定的列表转化成二叉树

    在LeetCode上做题时,有很多二叉树相关题目的测试数据是用列表给出的,提交的时候有时会出现一些数据通不过,这就需要在本地调试,因此需要使用列表来构建二叉树,方便自己调试.LeetCode上二叉树结 ...