WPF的体系结构上

原创 2007年09月26日 18:09:00

WPF的体系结构上

这里主要讨论一下WPF的类结构。包含了WPF大多数主要子系统,描述了他们之间是怎样进行交互的,同时也对WPF体系为什么要选择这样或那样的方式来实现WPF的某些部分做一个大概的陈述

       本文主要包含如下话题:

1〉  System.Object

2〉  System.Threading.DispatcherObject

3〉  System.Windows.DependencyObject

4〉  System.Windows.Media.Visual

5〉  System.Windows.UIElement

6〉  System.Windows.FrameworkElement

7〉  System.Windows.Controls.Control

8〉  Summary

9〉  Other topics

System.Object

WPF编程模型主要通过托管代码实施。在WPF设计早期,关于在何处区分托管组件和非托管组件一直是一个争论不休的话题。CLR提供了一系列的特性是个整个开发更具效率且获得更好的健壮性能,然而,鱼和熊掌不能兼得,这是以其他方面的代价换来的。

下图展示了构成WPF主要的组件。图的红色区域是WPF的主要组成。其中只有milcore是非托管模块,这主要是为了更好的将DirectX整合到WPF中。其一,WPF中所有的显示由DirectX引擎处理,这将允许高效的硬件和软件渲染。其二,WPF要求对内存和执行体良好的控制。其三,milcore对显示极为敏感,不得不放弃许多CLR提供的好处来获得更好的性能

System.Threading.DispatcherObject

WPF中有许多类继承自DispatcherObjectDispatcherObject提供了处理同步和并发的基本构造。WPF建立在dispatcher提供的消息系统之上。它的工作方式很像win32中的消息泵;事实上,WPFdispatcher使用User32 消息来实现线程间调用的。

当讨论WPF中的并发时,有两个核心概念需要弄清楚—dispatcher(分发器)thread affinity(线程亲缘性)

线程亲缘性发生在当一个组件要使用当前正在执行线程的变量来存储状态的时候。通用的方式是使用线程局部存储(TLS)来存储这些状态。线程亲缘性要求EXE的每个逻辑线程都只属于存在于OS中的物理线程。

System.Windows.DependencyObject

构建WPF的一个主要的体系哲学是属性优先于方法和事件。属性是声名性的并且允许你更方便的指定你想要的意图。它也支持模型驱动,数据驱动,UI显示。它(前文哲学)允许更多的属性通过绑定实对应用程序的更加方便的控制。

为使更多的系统用属性来驱动,一个比CLR提供的属性系统更加丰富的属性系统是必须的。一个简单的例子就是change notification(更改通知)。为了实现双向绑定。需要绑定双方都实现change notification。为使行为关联到属性值,需要在属性值改变的时候获得通知。Microsoft.NET Framework提供了一个接口:INotifyPropertyChange。通过它一个对象可以发布它自己的change notification

WPF提供了丰富的属性系统,继承自DependencyObject。它的一个基础是属性表达式。属性系统提供对属性的稀疏保存。

 

(一):WPF体系结构

WPF的体系结构一般如下:(MSDN)(维基百科)我们重点介绍下第2张图,它细化了第一张图的内容。整个体系分为3层1.托管WPF层PresentatinFoundation 提供布局、样式、控件、...
  • muzizongheng
  • muzizongheng
  • 2016年05月08日 17:33
  • 4102

WPF经典教程之WPF体系结构

  • 2014年10月03日 12:35
  • 160KB
  • 下载

WPF 体系结构

本主题提供 Windows Presentation Foundation (WPF) 类层次结构的指导教程, 涵盖了 WPF 的大部分主要子系统,并描述它们是如何交互的。 本主题还详细介绍了 WPF...
  • changtianshuiyue
  • changtianshuiyue
  • 2014年08月31日 21:13
  • 937

WPF框架剖析,从头开始自己写WPF框架

首先,在这里我要说明的是:这里的例子,都是通过控制台程序来创建WPF应用,而非使用现成的WPF模版。因为WPF模版封装了创建WPF应用所需要的各种基本元素,并不利于我们学习。   创建一个WPF...
  • iilegend
  • iilegend
  • 2017年02月20日 11:04
  • 413

WPF中使用MVVM创建一个简单的框架

使用WPF中的data template、commands、data binding、resource结合MVVM模式,创建一个简单、可测试、健壮的框架。...
  • afjafjafj2008
  • afjafjafj2008
  • 2015年02月03日 13:30
  • 15169

WPF架构分析

1.DisptcherObject提供了线程和并发模型,实现了消息系统。 2.DependencyObject提供了更改通知,实现了绑定,样式。3.Visual是托管API和非托管API(milcor...
  • muzizongheng
  • muzizongheng
  • 2013年07月10日 15:43
  • 1336

(一):WPF体系结构

WPF的体系结构一般如下:(MSDN)(维基百科)我们重点介绍下第2张图,它细化了第一张图的内容。整个体系分为3层1.托管WPF层PresentatinFoundation 提供布局、样式、控件、...
  • muzizongheng
  • muzizongheng
  • 2016年05月08日 17:33
  • 4102

WPF 体系结构

本主题提供 Windows Presentation Foundation (WPF) 类层次结构的指导教程, 涵盖了 WPF 的大部分主要子系统,并描述它们是如何交互的。 本主题还详细介绍了 WPF...
  • changtianshuiyue
  • changtianshuiyue
  • 2014年08月31日 21:13
  • 937

WPF 体系结构(一)

WPF 的基础的体系结构,所引用的 Assembly 如下图所示: 关系图中的 PresentationFramework、PresentationCore  和  milcore 是  WPF ...
  • kyirsheng
  • kyirsheng
  • 2013年09月18日 10:48
  • 514

WPF 体系结构

WPF 体系结构   WPF 的基础的体系结构,所引用的 Assembly 如下图所示: 关系图中的 PresentationFram...
  • qq542369628
  • qq542369628
  • 2013年01月08日 09:59
  • 414
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WPF的体系结构上
举报原因:
原因补充:

(最多只允许输入30个字)