首页 > 其他分享 >WPF的Decorator 、Adorner和AdornerDecorator

WPF的Decorator 、Adorner和AdornerDecorator

时间:2022-09-01 18:56:13浏览次数:57  
标签:adorners AdornerDecorator 元素 visual Adorner WPF Decorator

Decorator 和 Adorner

  它们都有“装饰品”的意思。

  Decorator类负责包装某个UI元素,以提供额外的行为。它有一个类型为UIElement的Child属性,其中含有待包装的内容。Decorator可被用于添加简单的视觉装饰,例如边界(Border),或者更复杂的行为,例如ViewBox,AdornerDecorator,或是InkPresenter。

  当你从Decorator派生新类时,可以暴露一些有用的依赖属性来定制它。例如,Border类暴露它的BorderBrush, BorderThickness,和CornerRadius,它们都会影响包围child content的边界的绘制方式。

  Adorner类

  既然已经有了Decorator为什么还需要Adorner类?因为它们的功能不同。Decorator类用于在child content的外周绘制装饰;Adorner允许你在已经存在的visual元素之上叠加visuals。简单的想法是,它们是另一组交互的visual,提供与主visual交互的额外途径。这看起来比较复杂,但是想想出现在典型图表软件元素中的窗口小部件(widgets),例如调整尺寸的把柄(resizing grips)。那些就是叠加在元素之上的另一个visual,它们装饰并提供额外的功能及交互。通过点击或拖动这些调节尺寸的把柄,用户可以改变其中控件的大小。

  Adorner类和AdornerDecorator一起工作,后者是一个不可见的平面,用于承载adorners。为了成为可视树的一部分,adorners必须有一个容器。AdornerDecorator就是这个容器。

  AdornerDecorator通常被定义在可视树的顶端(如Window Control的ControlTemplate)。这使得所有的adorners都位于窗口内容之上。

标签:adorners,AdornerDecorator,元素,visual,Adorner,WPF,Decorator
From: https://www.cnblogs.com/cdaniu/p/16647532.html

相关文章

  • WPF应用布局基础
    创建应用WPF应用(.Netframework)C#完成后控制台在下方在grid中存放内容存放的容器有多种<Grid></Grid><StackPanel/><WrapPanel/><DockPanel/><UniformGrid/>不同的存放容......
  • wpf Load
    第一种写法,写在Interaction.Triggers<UserControl> <b:Interaction.Triggers>    <b:EventTriggerEventName="Loaded">      <b:CallMethodAct......
  • WPF背景页面布局
    <Windowx:Class="TimeCalc.View.TestWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsof......
  • 记一次 .NET 某金融企业 WPF 程序卡死分析
    一:背景1.讲故事前段时间遇到了一个难度比较高的dump,经过几个小时的探索,终于给找出来了,在这里做一下整理,希望对大家有所帮助,对自己也是一个总结,好了,老规矩,上WinDBG说......
  • C# 32位程序,申请大内存,附dome(wpf),亲测可用
    1、我是vs2017,在选装vs的时候,需要安装c++模块,因为申请大内存的必要exe存放在vc的某个目录(下面会给出详细的地址)下的2、安装完成在vs的安装目录可找到这个文件,我是社区版本......
  • 【WPF】五、WPF绑定
    <Windowx:Class="WpfApp1.Window4"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx......
  • 【WPF】二、样式基础
    <Windowx:Class="WpfApp1.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/wi......
  • 界面控件DevExpress WinForms & WPF v22.2——全新的.NET和ARM支持
    DevExpressWinForm拥有180+组件和UI库,能为WindowsForms平台创建具有影响力的业务解决方案。DevExpressWinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office......
  • WPF Textbox 控件绑定数据即时更新UpdateSourceTrigger=PropertyChanged
     Textbox控件绑定数据类型为doubie类型时,如果触发条件为UpdateSourceTrigger=PropertyChanged时,无法输入小数点。 解决方案:方法一:关闭数据一至检查System.......
  • WPF中使用 WndProc 来处理Windows Messages
    WPF对应的C#程序有时需要与Window32程序进行通信,会使用到窗口过程函数来接受Windows消息。引入System.Windows.Interop命名空间,将使用到其中的HwndSource使用实例如......