Logical and Visual Trees WPF in VB.NET
In this article I will share some important points about the Logical and Visual Trees in WPF.
Logical Trees: The logical tree represents the essential structure of your UI. It closely matches the elements you declare in XAML, and excludes most visual elements created internally to help render the elements you declared. As a WPF programmer, you'll spend most of your time building the logical tree and then backing it up with event handling code. In fact, all of the features you've considered so far, work through the logical tree. Basically it describes the relations between elements of the user interface. The main responsibilities of the logical tree are:
Inherit DependencyProperty values
Looking up element names for bindings
Visual Trees: A visual tree is an expanded version of the logical tree. It breaks elements down into smaller pieces, it represents all of the elements in your UI which render to an output device. The visual tree is used for many things like rendering, event routing, locating resources (if an element has no logical parent), and more. It contains all logical elements including all visual elements of the template of each element, and the main responsiblilities of visual tree are:
Rendering visual elements
Propagate element opacity
Propagate Layout- and RenderTransforms
Example of an simple logical tree:
Title="SimpleWindow" Height="300" Width="300">
<Button Padding="5" Margin="10">Button one</Button>
<Button Padding="5" Margin="10">Button two</Button>
<Button Padding="5" Margin="10">Button three</Button>
In visual tree representation the output of above example looks like the below given figure:
Hope after reading this article your idea will clear about the concept of Logical and Visual Trees in WPF.