开发者社区> luminji> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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(包含链接)。如您有任何疑问或者授权方面的协商,请给我留言。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
WPF 元素相对另外一个元素的 相对位置
原文:WPF 元素相对另外一个元素的 相对位置 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/koloumi/article/details/74011083 在实际使用WPF后知道它确实很便捷同时布局也很方便,总之处理的都是很不错特别是数据绑定。
485 0
WPFの获取任意元素的位置
原文:WPFの获取任意元素的位置 如果布局在Grid中: 方法一:  //_stackPanel为子元素,_grid为父元素  Point point = _stackPanel.TranslatePoint(new Point(0, 0), (UIElement)_grid);  方法二:  /...
738 0
WPF 中使用附加属性,将任意 UI 元素或控件裁剪成圆形(椭圆)
原文:WPF 中使用附加属性,将任意 UI 元素或控件裁剪成圆形(椭圆) 版权声明:本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名吕毅(包含链接:http://blog.csdn.net/wpwalter/),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。
1011 0
WPF中元素拖拽的两个实例
原文:WPF中元素拖拽的两个实例   今天结合之前做过的一些拖拽的例子来对这个方面进行一些总结,这里主要用两个例子来说明在WPF中如何使用拖拽进行操作,元素拖拽是一个常见的操作,第一个拖拽的例子是将ListBox中的子元素拖拽到ListView的某一个节点,从而将该子元素作为当前节点的子节点。
819 0
WPF元素绑定
原文:WPF元素绑定 数据绑定简介:数据绑定是一种关系,该关系告诉WPF从源对象提取一些信息,并用这些信息设置目标对象的属性。目标属性是依赖项属性。源对象可以是任何内容,从另一个WPF元素乃至ADO.NET数据对象(如DataTable)或自行创建出数据对象。
557 0
【msdn wpf forum翻译】获取当前窗口焦点所在的元素
原文:【msdn wpf forum翻译】获取当前窗口焦点所在的元素原文地址: http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/6bd7a03a-f0b4-42df-a7f2-5182cf003cb0 Bialgous回答:IInputElement focusedElement = FocusManager.
787 0
【msdn wpf forum翻译】如何在wpf程序(程序激活时)中捕获所有的键盘输入,而不管哪个元素获得焦点?
原文:【msdn wpf forum翻译】如何在wpf程序(程序激活时)中捕获所有的键盘输入,而不管哪个元素获得焦点?原文链接:http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/cf884a91-c135-447d-b16b-214d2d9e9972 有时有些特殊的程序需要这样处理。
501 0
在WPF中减少逻辑与UI元素的耦合
原文:在WPF中减少逻辑与UI元素的耦合              在WPF中减少逻辑与UI元素的耦合 周银辉 1,    避免在逻辑中引用界面元素,别把后台数据强加给UI  一个糟糕的案例 比如说主界面上有一个显示当前任务状态的标签label_TaskState,我们会时常更新该标签以便及时地将任务状态通知用户。
554 0
WPF如何得到一个在用户控件内部的元素的坐标位置
原文:WPF如何得到一个在用户控件内部的元素的坐标位置 例如有这样一个用户控件: 这是主窗口: ...
684 0
+关注
luminji
微软最有价值技术专家(MVP),著有《编写高质量代码:改善C#程序的157个建议》,有着十多年的软件从业资历。
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载