📜  WPF-元素树

📅  最后修改于: 2020-11-18 09:51:10             🧑  作者: Mango


在许多技术中,元素和组件都以树结构排序,以便程序员可以轻松地处理对象并更改应用程序的行为。 Windows Presentation Foundation(WPF)具有对象形式的综合树结构。在WPF中,有两种方法可以将完整的对象树概念化-

  • 逻辑树结构
  • 视觉树结构

借助这些树结构,您可以轻松创建和识别UI元素之间的关系。通常,WPF开发人员和设计人员要么使用过程语言来创建应用程序,要么在XAML中设计应用程序的UI部分,同时牢记对象树结构。

逻辑树结构

在WPF应用程序中,XAML中的UI元素的结构表示逻辑树结构。在XAML中,UI的基本元素由开发人员声明。 WPF中的逻辑树定义了以下内容-

  • 依赖属性
  • 静态和动态资源
  • 将元素绑定到其名称等上

让我们看下面的示例,其中创建了一个按钮和一个列表框。

 
    
    
       
        
       
          
          
          
       
        
    
    
 

如果查看XAML代码,则会观察到树结构,即根节点是Window,并且在根节点内部,只有一个子级,即StackPanel。但是StackPanel包含两个子元素,按钮和列表框。列表框还有三个子列表框项目。

视觉树结构

在WPF中,可视树的概念描述了可视对象的结构,如Visual Base Class所示。它表示所有呈现到输出屏幕的UI元素。

当程序员想要为特定控件创建模板时,他实际上是在渲染该控件的可视树。对于那些出于性能和优化原因而希望绘制较低级别控件的人来说,可视化树也非常有用。

在WPF应用程序中,可视树用于-

  • 渲染视觉对象。
  • 渲染布局。
  • 路由事件大多沿可视树传播,而不是沿逻辑树传播。

要查看上面包含一个按钮和一个列表框的简单应用程序的可视树,让我们编译并执行XAML代码,您将看到以下窗口。

视觉树结构

当应用程序运行时,您可以在“实时视觉树”窗口中看到正在运行的应用程序的视觉树,该窗口显示了此应用程序的完整层次结构,如下所示。

逻辑树

可视树通常是逻辑树的超集。您可以在此处看到所有逻辑元素也都出现在可视树中。因此,这两棵树实际上只是构成UI的同一组对象的两个不同视图。

  • 逻辑树遗漏了许多细节,使您可以专注于用户界面的核心结构,而忽略了其呈现方式的细节。

  • 逻辑树是您用来创建用户界面的基本结构的工具。

  • 如果您专注于演示,则可视树将很有趣。例如,如果您希望自定义任何UI元素的外观,则需要使用可视树。