• Visual \UIElemnt\FrameworkElement\Control


    Visual

    Visual 实际上是 WPF 组合系统的入口点。Visual 是托管 API 和非托管 milcore 这两个子系统之间的连接点。

    Visual 对象可对下列功能提供支持:

    • 输出显示:呈现 Visual 对象的持久的序列化绘图内容。
    • 转换:对可视对象执行转换。
    • 剪辑:为 Visual 对象提供剪辑区域支持。
    • 命中测试:确定指定的坐标(点)或几何图形是否包含在可视对象的边界内。
    • 边界框计算:确定 Visual 对象的边框。UIElement

    UIElement 定义核心子系统,包括 Layout、Input 和 Event。  

          Layout

    Layout 是 WPF 中的一个核心概念。在许多系统中,可能有一组固定的布局模型(HTML 支持三种布局模型:流、绝对和表),也可能没有布局模型(User32 实际仅支持绝对定位)。WPF 先假设开发人员和设计人员希望有一个灵活的可扩展布局模型,该模型可能是由属性值而不是命令性逻辑驱动的。在 UIElement 级别,会引入布局的基本协定 - 具有 MeasureArrange 处理过程的两阶段模型。

         Input

    Touch\Mouse\Stylus\KeyBoard

    输入是作为内核模式设备驱动程序上的信号发出的,并通过涉及 Windows 内核和 User32 的复杂进程路由到正确的进程和线程。与输入相对应的 User32 消息路由到 WPF 后,就会转换为 WPF 原始输入消息,并发送到调度程序。WPF 允许将原始输入事件转换为多个实际事件,允许在保证传递到位的情况下在较低的系统级别实现类似“MouseEnter”的功能。

        Event

    Preview 隧道路由事件 vs 冒泡事件

    如果事件从目标向上遍历树直到根,则被称为“冒泡”,如果从根开始向下遍历到目标,它们被称为“隧道”。输入预览事件隧道,使树中的任何元素都有机会筛选事件或对事件采取操作。然后,常规(非预览)事件将从目标向上冒泡到根。

    继承层次结构


    System.Object
    System.Windows.Threading.DispatcherObject
    System.Windows.DependencyObject
    System.Windows.Media.Visual
    System.Windows.UIElement
    System.Windows.FrameworkElement

     

     FrameworkElement

    a)         应用程序布局

    FrameworkElement 引入的主要策略是关于应用程序布局。FrameworkElement 基于 UIElement 引入的基本布局构建而成,并增加了布局“插槽”的概念,使布局创作者可以更方便地拥有一组一致、属性驱动的布局语义。HorizontalAlignmentVerticalAlignmentMinWidthMargin 等属性使得从 FrameworkElement 派生的所有组件在布局容器内具有一致的行为。

    b)         动画

    c)         数据绑定 数据模板

    d)         样式

    Control

    a)         常用属性

    Control 提供一组常用属性,如 ForegroundBackgroundPadding 等,模板创作者可以使用这些常用属性来自定义控件的显示。控件的实现提供了数据模型和交互模型。交互模型定义了一组命令(如窗口的“关闭”),以及到输入笔势的绑定(如单击窗口上角的红叉)。数据模型提供了一组属性,用于自定义交互模型或自定义显示(由模板确定)。

    b)         模型

    数据模型(属性)、交互模型(命令和事件)及显示模型(模板)之间的划分,使用户可以对控件的外观和行为进行完全自定义。最常见的控件数据模型是内容模型。

  • 相关阅读:
    如何强制360浏览器以极速模式打开页面
    如何解决Android SDK无法下载Package的问题(.net)
    Xamarin 安装步骤
    使用require.js和backbone实现简单单页应用实践
    HBuilder之初体验
    ClassLoader&双亲委派&类初始化过程
    List remove ConcurrentModificationException源码分析
    二十九、简谈设计模式
    二十八、Java基础--------正则表达式
    二十七、JDK1.5新特性---Annotation
  • 原文地址:https://www.cnblogs.com/xiaokang088/p/2037528.html
Copyright © 2020-2023  润新知