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


    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(包含链接)。如您有任何疑问或者授权方面的协商,请给我留言。
  • 相关阅读:
    Redis命令——小白学习 Redis 数据库日记(2017-06-13)
    Buses(形容城市公车交通情况)
    Things you need to prepare before going to airport
    bathroom words
    this指针
    友元
    成员对象和封闭类
    静态成员变量和静态成员函数、 常量对象和常量成员函数
    C++类
    shell选择语句、循环语句
  • 原文地址:https://www.cnblogs.com/luminji/p/1838093.html
Copyright © 2020-2023  润新知