Skip to Main Content
Programming WPF, 2nd Edition
book

Programming WPF, 2nd Edition

by Chris Sells, Ian Griffiths
August 2007
Intermediate to advanced content levelIntermediate to advanced
864 pages
25h 52m
English
O'Reilly Media, Inc.
Content preview from Programming WPF, 2nd Edition

Logical and Visual Trees

The existence of templates leads to an API design dilemma that the WPF architects had to resolve. If a developer wishes to access the elements in the UI, should she see the fully expanded tree, containing all the instantiated templates? Although this would put the developer in full control, it might be rather cumbersome; often a developer only really cares that there is a Button present, not about the structure of its appearance. On the other hand, to present the simple pre-expansion view would be unnecessarily limiting.

To solve this problem, WPF lets you work with either the logical tree or the visual tree. The visual tree contains most[58] of the elements originally specified (either in markup or in code) plus all the extra elements added as a result of template instantiation. The logical tree is a subset of the visual tree that omits the elements added as a result of control template instantiation. WPF provides two helper classes for working with these two trees: VisualTreeHelper and LogicalTreeHelper.

For example, consider the following snippet of XAML:

<WrapPanel Name="rootPanel">
  <Button>_Click me</Button>
</WrapPanel>

Walking this logical tree at runtime using the LogicalTreeHelper looks like Example 9-12.

Example 9-12. Dumping the logical tree

public Window1(  ) {
  InitializeComponent(  );

  // Can dump the logical tree anytime after InitComp
  DumpLogicalTree(rootPanel, 0); } void DumpLogicalTree(object parent, int level) { string typeName = parent.GetType( ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

Programming C#, 4th Edition

Programming C#, 4th Edition

Jesse Liberty
Programming C# 10

Programming C# 10

Ian Griffiths

Publisher Resources

ISBN: 9780596510374Supplemental ContentErrata Page