WPF快速指导8:WPF基元素类

简介: WPF快速指导8:WPF基元素类 本文摘要: 1:什么是基元素类; 2:基元素类的使用; 3:其它重要基类   1:什么是基元素类      WPF中的大部分类都是从 SDK 文档中通常称为基元素类的四个类派生而来。

WPF快速指导8:WPF基元素类

本文摘要:

1:什么是基元素类;

2:基元素类的使用;

3:其它重要基类

 

1:什么是基元素类

     WPF中的大部分类都是从 SDK 文档中通常称为基元素类的四个类派生而来。这些类包括 UIElementFrameworkElementContentElementFrameworkContentElementDependencyObject 也相关,因为它是 UIElementContentElement 的公共基类。

     UIElement 用作 FrameworkElement 的基类,ContentElement 用作 FrameworkContentElement 的基类。

     某些 UIElement 类要用作内容宿主:这些类为一个或多个 ContentElement 类(DocumentViewer 就是此类的一个示例)提供承载和呈现。ContentElement 用作以下元素的基类:所具有的对象模型稍小,并且更多地用于对 UIElement 中可能承载的文本、信息或文档内容进行寻址。

 

2:基元素类的使用

    如果您要实现控件,您可能需要从以下类中派生:实际控件、控件系列基类或至少是 Control 基类。

    如果您创建从 DependencyObject 派生的类,则将继承以下功能:

  • GetValueSetValue 支持以及一般的属性系统支持。

  • 使用以下两种属性的能力:依赖项属性,以及作为依赖项属性实现的附加属性。

    如果您创建从 UIElement 派生的类,则除了能够继承 DependencyObject 提供的功能外,还将继承以下功能:

  • 对动画属性值的基本支持。有关更多信息,请参见动画概述

  • 对基本输入事件和命令的支持。有关更多信息,请参见输入概述命令概述

  • 可以重写以便为布局系统提供信息的虚方法。

    如果您创建从 FrameworkElement 派生的类,则除了能够继承 UIElement 提供的功能外,还将继承以下功能:

  • 对样式设置和演示图板的支持。有关更多信息,请参见 Style演示图板概述

  • 对数据绑定的支持。有关更多信息,请参见数据绑定概述

  • 对动态资源引用的支持。有关更多信息,请参见资源概述

  • 对属性值继承以及元数据中有助于向框架服务报告属性的相关情况(如数据绑定、样式或布局的框架实现)的其他标志的支持。有关更多信息,请参见框架属性元数据

  • 逻辑树的概念。有关更多信息,请参见 WPF 中的树

  • 对布局系统的实际 WPF 框架级实现的支持,包括 OnPropertyChanged 重写(该重写可以检测到影响布局的属性更改)。

    如果您创建从 ContentElement 派生的类,则除了能够继承 DependencyObject 提供的功能外,还将继承以下功能:

    如果您创建从 FrameworkContentElement 派生的类,则除了能够继承 ContentElement 提供的功能外,还将获得以下功能:

  • 对样式设置和演示图板的支持。有关更多信息,请参见 Style动画概述

  • 对数据绑定的支持。有关更多信息,请参见数据绑定概述

  • 对动态资源引用的支持。有关更多信息,请参见资源概述

  • 对属性值继承以及元数据中有助于向框架服务报告属性情况(如数据绑定、样式或布局的框架实现)的其他标志的支持。有关更多信息,请参见框架属性元数据

  • 您不会继承对布局系统修改(如 ArrangeOverride)的访问权限。布局系统实现只在 FrameworkElement 上提供。但是,您会继承 OnPropertyChanged 重写(可以检测影响布局的属性更改并将这些更改报告给任何内容宿主)。

3:其它重要基类

 

DispatcherObject

     DispatcherObject 为 WPF 线程模型提供支持,并允许为 WPF 应用程序创建的所有对象与 Dispatcher 相关联。即使不从 UIElementDependencyObjectVisual 派生,也应考虑从 DispatcherObject 派生,以获得对线程模型的这种支持。有关更多信息,请参见线程处理模型

Visual

     Visual 实现二维对象在近似矩形的区域中通常需要具有可视化表示的概念。Visual 的实际呈现发生在其他类中(不是独立的),但 Visual 类提供一个由呈现过程在多种级别使用的已知类型。Visual 实现命中测试,但它不公开报告命中测试阳性结果(这些结果位于 UIElement 中)的事件。有关更多信息,请参见可视化层编程

Freezable

     Freezable 通过在出于性能原因需要不可变对象时提供为对象生成副本的途径,来模拟可变对象的不变性。Freezable 类型为某些图形元素(如几何形状、画笔以及动画)提供了一个通用的基础。值得注意的是,Freezable 不是一个 Visual;当应用 Freezable 以填充另一个对象的属性值时,它包含的属性将变成子属性,而这些子属性可能会影响呈现。有关更多信息,请参见Freezable 对象概述

Animatable

     Animatable 是一个 Freezable 派生类,它特别添加了动画控件层和某些实用工具成员,从而使当前动画的属性可以与未动画的属性区分开。

控件

     Control 是称为控件或组件(取决于技术)的对象类型的理想基类。一般而言,WPF 控件类是直接表示 UI 控件或积极参与控件组合的类。Control 实现的主要功能是控件模板化。

NET C# 入门级 .NET C# 专业级 .NET 架构级 BS系统专业级 BS系统安全
1.开篇及C#程序、解决方案的结构
2.源码管理之TFS入门
3.打老鼠初级
……
21.CMS之主要功能实现
22.进程和线程基础
23.类型转换
24.算法基础
25.初级课程之剩余知识点
1.消灭打老鼠游戏中的自定义委托
2.垃圾回收
3.Dispose模式
……
16.异常使用指导
17.最常用的重构指导
18.Debug和IDE的进阶
19.Resharper的使用
20.ILSPY的使用
1.Socket入门
2.打造打老鼠游戏网络版
3.WCF入门
……
10.依赖注入
11.万物兼可测试
12.软件指标之覆盖率计算
13.软件指标之代码行
14.软件指标之圈复杂度、嵌套深度
1.HTML
2.WebForm原理
3.CSS必知必会
……
19.让浏览器缓存Shop
20.Asp.net的生命周期
21.Asp.net网站的发布以及调试晋级
22.BS程序的本质
23.压力测试我们的Shop
1.Fiddler必知必会
2.IE开发者工具必知必会
3.跨站脚本防范
4.权限欺骗防范
5.参数越界防范
6.会话劫持防范
7.CSRF防范
8.盗链防范
9.静态文件的保护


 

 

 
 
NET C# 入门级 .NET C# 专业级 .NET 架构级 BS系统专业级 BS系统安全
1.开篇及C#程序、解决方案的结构
2.源码管理之TFS入门
3.打老鼠初级
……
21.CMS之主要功能实现
22.进程和线程基础
23.类型转换
24.算法基础
25.初级课程之剩余知识点
1.消灭打老鼠游戏中的自定义委托
2.垃圾回收
3.Dispose模式
……
16.异常使用指导
17.最常用的重构指导
18.Debug和IDE的进阶
19.Resharper的使用
20.ILSPY的使用
1.Socket入门
2.打造打老鼠游戏网络版
3.WCF入门
……
10.依赖注入
11.万物兼可测试
12.软件指标之覆盖率计算
13.软件指标之代码行
14.软件指标之圈复杂度、嵌套深度
1.HTML
2.WebForm原理
3.CSS必知必会
……
19.让浏览器缓存Shop
20.Asp.net的生命周期
21.Asp.net网站的发布以及调试晋级
22.BS程序的本质
23.压力测试我们的Shop
1.Fiddler必知必会
2.IE开发者工具必知必会
3.跨站脚本防范
4.权限欺骗防范
5.参数越界防范
6.会话劫持防范
7.CSRF防范
8.盗链防范
9.静态文件的保护


 
 
Creative Commons License本文基于 Creative Commons Attribution 2.5 China Mainland License发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名 http://www.cnblogs.com/luminji(包含链接)。如您有任何疑问或者授权方面的协商,请给我留言。
目录
相关文章
|
6月前
|
开发框架 .NET C#
2000条你应知的WPF小姿势 基础篇<63-68 Triggers和WPF类逻辑结构>
2000条你应知的WPF小姿势 基础篇<63-68 Triggers和WPF类逻辑结构>
30 0
|
C#
WPFの获取任意元素的位置
原文:WPFの获取任意元素的位置 如果布局在Grid中: 方法一:  //_stackPanel为子元素,_grid为父元素  Point point = _stackPanel.TranslatePoint(new Point(0, 0), (UIElement)_grid);  方法二:  /...
897 0
|
C# 前端开发
WPF如何得到一个在用户控件内部的元素的坐标位置
原文:WPF如何得到一个在用户控件内部的元素的坐标位置 例如有这样一个用户控件: 这是主窗口: ...
1366 0
|
C#
WPF 元素相对另外一个元素的 相对位置
原文:WPF 元素相对另外一个元素的 相对位置 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/koloumi/article/details/74011083 在实际使用WPF后知道它确实很便捷同时布局也很方便,总之处理的都是很不错特别是数据绑定。
808 0
|
C#
在WPF中使用FontAwesome之类的字体图标
原文:在WPF中使用FontAwesome之类的字体图标 我之前在博客中介绍过几个矢量图库网站,在WPF程序中,一般接触到的矢量图标资源有XAML、SVG、字体这三种格式。XAML是标准格式就不说了,SVG并不是直接支持的,不过微软提供了Expression Design可以非常方便我们将其转换为XAML格式的资源。
1353 0
|
数据可视化 C# 前端开发
WPF中的3D特性和常见的几个类
原文:WPF中的3D特性和常见的几个类 WPF 3D 常用的几个类及其关系 1.  Visual 类      所有二维可视化元素的基类,为 WPF 中的呈现提供支持,其中包括命中测试、坐标转换和边界框计算。
1088 0
|
C#
WPF 中使用附加属性,将任意 UI 元素或控件裁剪成圆形(椭圆)
原文:WPF 中使用附加属性,将任意 UI 元素或控件裁剪成圆形(椭圆) 版权声明:本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名吕毅(包含链接:http://blog.csdn.net/wpwalter/),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。
1233 0
|
C# 索引
WPF中元素拖拽的两个实例
原文:WPF中元素拖拽的两个实例   今天结合之前做过的一些拖拽的例子来对这个方面进行一些总结,这里主要用两个例子来说明在WPF中如何使用拖拽进行操作,元素拖拽是一个常见的操作,第一个拖拽的例子是将ListBox中的子元素拖拽到ListView的某一个节点,从而将该子元素作为当前节点的子节点。
1105 0
|
C#
WPF 属性变更通知类的实现
原文:WPF 属性变更通知类的实现 平时用依赖属性多一些,普通属性的变更通知知道有这个方法,但是老是忘记名字,再写一遍吧。
980 0
|
C# 前端开发 Windows
WPF中的Application类。
原文:WPF中的Application类。 Application对象用的名称空间是system.windows 1、手动创建Application对象步骤。 1.1)、把项目中的App.Xaml文件从项目中排除。
1230 0