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. NFS启动时报错Linux NFS:could not open connection for tcp6

    1.1 启动时出现的错误 [root@znix ~]#/etc/init.d/nfs start Shutting down NFS daemon:                          ...

  2. queue的入门

    #include "iostream"#include "queue" using namespace std; void main12(){ queue &l ...

  3. 不想再被鄙视?那就看进来! 一文搞懂Python2字符编码

    程序员都自视清高,觉得自己是创造者,经常鄙视不太懂技术的产品或者QA.可悲的是,程序员之间也相互鄙视,程序员的鄙视链流传甚广,作为一个Python程序员,自然最关心的是下面这幅图啦 我们项目组一值使用 ...

  4. 使用springboot完成密码的加密解密

    现今对于大多数公司来说,信息安全工作尤为重要,就像京东,阿里巴巴这样的大公司来说,信息安全是最为重要的一个话题,举个简单的例子: 就像这样的密码公开化,很容易造成一定的信息的泄露.所以今天我们要讲的就 ...

  5. jQuery学习笔记之Ajax用法详解

    这篇文章主要介绍了jQuery学习笔记之Ajax用法,结合实例形式较为详细的分析总结了jQuery中ajax的相关使用技巧,包括ajax请求.载入.处理.传递等,需要的朋友可以参考下 本文实例讲述了j ...

  6. C#中??和?分别是什么意思?

    在C#中??和?分别是什么意思? 1. 可空类型修饰符(?):引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空.例如:string str=null; 是正确的,int i=null ...

  7. C#.NET 用程序画图,曲线图

    using System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security ...

  8. linux操作系统基础篇(六)

    linux服务篇 1.samba服务的搭建 samba的功能: samba是一个网络服务器,用于Linux和Windows之间共享文件.2. samba服务的启动.停止.重启service smb s ...

  9. 结合java.util.TreeMap源码理解红黑树

    前言 本篇将结合JDK1.6的TreeMap源码,来一起探索红-黑树的奥秘.红黑树是解决二叉搜索树的非平衡问题. 当插入(或者删除)一个新节点时,为了使树保持平衡,必须遵循一定的规则,这个规则就是红- ...

  10. 使用 Rust 构建分布式 Key-Value Store

    欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 引子 构建一个分布式 Key-Value Store 并不是一件容易的事情,我们需要考虑很多的问题,首先就是我们的系统到底需要提供什么样的功能 ...