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. CodeForces 11D(状压DP 求图中环的个数)

    Given a simple graph, output the number of simple cycles in it. A simple cycle is a cycle with no re ...

  2. IdentityServer4 SigningCredential(RSA 证书加密)

    IdentityServer4 默认提供了两种证书加密配置: services.AddIdentityServer() .AddDeveloperSigningCredential() .AddTem ...

  3. C# orderby子句

    注意:对联接运算的结果进行排序. 请注意,排序在联接之后执行. 虽然可以在联接之前将 orderby 子句用于一个或多个源序列,不过通常不建议这样做. 某些 LINQ 提供程序可能不会在联接之后保留该 ...

  4. ruby 异常处理 begin rescue end

    begin 代码1 rescue 代码 end 如果执行 代码1 发生异常 则转至 代码2 若正常,则执行完跳出

  5. SpringBoot下配置FreeMarker配置远程模版

    需求产生原因 要求在同一个接口中,根据不同的参数,返回不同的视图结果 所有的视图中的数据基本一致 要求页面能静态化,优化SEO 例如:A接口返回客户的信息 客户A在调用接口时,返回其个性化定制的页面A ...

  6. 一:Redis的7个应用场景

    Redis的7个应用场景   一:缓存——热数据 热点数据(经常会被查询,但是不经常被修改或者删除的数据),首选是使用redis缓存,毕竟强大到冒泡的QPS和极强的稳定性不是所有类似工具都有的,而且相 ...

  7. Java字符编码

    今天在往oracle数据库里插入数据时发现,往一个20字节的字段里插入8个汉字加上一个括号,并没有提示字段超长.猜想数据库应该并没有用万国码(utf-8). 查询数据库编码sql:select * f ...

  8. Java多线程与并发模型之锁

    这是一篇总结Java多线程开发的长文.文章是从Java创建之初就存在的synchronized关键字引入,对Java多线程和并发模型进行了探讨.希望通过此篇内容的解读能帮助Java开发者更好的理清Ja ...

  9. asp.net web api 文件上传

    1正确的做法 public class AvaterController : BaseApiController { [HttpPost] public async Task<IHttpActi ...

  10. springMVC+spring+MyBatis(SSM)的简单配置

    SSM(Spring+SpringMVC+MyBatis)框架集由Spring.SpringMVC.MyBatis三个开源框架整合而成,常作为数据源较简单的web项目的框架. 其中: Spring是一 ...