你的位置:首页 > ASP.net教程

[ASP.net教程]WPF体系结构


WPF包含上千个类,有很深的层次结构。为了帮助理解类之间的关系

下图展示了WPF的体系结构

DispatcherObject类

    Dispatcher是一个抽象基类,用于绑定到一个线程上的类。与Windows窗体类似,WPF也要求仅从创建线程中调用方法和属性。派生自DispacherObject的类有一个关联的DispatcherObject对象,它可以用于切换线程

 

Application类

    在WPF应用程序中,会创建Application类的一个实例.这个类实现了Singleton模式,用于访问应用程序的窗口,资源和属性

 

DependencyObject类

    DenpendencyObject是所有支持依赖属性的类的基类。依赖属性可以依赖其他输入,例如主题和用户喜好。依赖属性与数据绑定,动画,资源和样式一起使用。

 

Visual类

    所有可见元素的基类都是Visual。这个类包含点击测试和转换等特性

 

UIElement类

    所有需要基本显示功能的WPF元素的抽象基类是UIElement。这个类提供了鼠标移动,拖放,按键的通道和起泡事件;提供了可以由派生类重写的虚显示方法;以及布局方法。WPF不再使用Window句柄,这个类就可以用Window句柄

 

FrameworkElement类

    FrameworkElement派生自基类UIElement,实现了由基类定义的方法的默认代码

 

Shape类

    Shape是所有图形元素的基类,例如Line,Ellipse,Polygon,Rectange

 

Control类

    Control派生自FrameworkElement,是所有用户交互元素的基类

 

Panel类

    Panel派生自FrameworkElement,是所有面板的抽象基类,这个类的Children属性用于面板中的所有UI元素,定义了安排子控件的方法。派生自Panel的类为子控件的布置方式定了不同的类,例如WrapPanel,StackPanel,Canvas,Grid

 

ContentControl类

    是所有有单个内容的控件的基类,如Label,Button。 内容控件的默认样式是受限制的,但可以使用模版改变其外观,ContentControl模型的类型具有一个Content属性.Content属性的类型为Object因此ContentControl中可以放置的内容没有任何限制

  以下控件在使用ContentControl内容模型:

Button,ButtonBase,CheckBox,ComboBoxItem,ContentControl,Frame,GridViewColumHeader,GroupItem,Label,ListBoxItem,ListViewItem,NavigationWindow,RadioButton,RepeatButton,ScrollViewer,StatusBarItem, ToggleButton, ToolTip, UserControl, Window

Content中只能放置一个控件

 

HeaderedContentControl类

    HeaderedContentControl类继承ContentControl类, 表示带有Header的ContentControl,其除了具有ContentControl的Content属性外,还具有一个Header属性

以下控件在使用HeaderedContentControl模型

Expander,GoupBox,TabItem

 

ItemsControl类

    从ItemsControl继承的控件包含一个对象集合,可以使用ItemsSource属性或Items属性来填充一个ItemsControl.

以下控件在使用ItemsControl模型

ComboBox , ContextMenu, ListBox, ListView, Menu,StatusBar,TabControl,TreeView

 

HeaderedItemsControl类

    HeaderedItemsControl从ItemsControl类继承. HeaderedItemsControl定义Header属性,该属性遵从相同的规则,因为HeaderedContentControl. WPF的Header属性附带三个从HeaderedItemControl继承的控件:

MenuItem,ToolBar,TreeViewItem

 

 

 

WPF体系结构