// ======================================================================== // // Copyright (C) 2013-2014 MARC CHEVALDONNE // marc.chevaldonne.free.fr // // Module : MainWindow.xaml.cs // Author : Marc Chevaldonné // Creation date : 2014-05-17 // // ======================================================================== using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace ex_065_006_LogicalTree_VisualTree { /// /// Logique d'interaction pour MainWindow.xaml /// public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); PrintLogicalTree(0, this); } protected override void OnContentRendered(EventArgs e) { base.OnContentRendered(e); PrintVisualTree(0, this); } void PrintLogicalTree(int depth, object obj) { mLogicalTree.Text += string.Format("{0}{1}\n", new string(' ', depth*2), obj) ; if (!(obj is DependencyObject)) return; foreach (object child in LogicalTreeHelper.GetChildren(obj as DependencyObject)) PrintLogicalTree(depth + 1, child); } void PrintVisualTree(int depth, DependencyObject obj) { mVisualTree.Text += string.Format("{0}{1}\n", new string(' ', depth*2), obj); for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++) { PrintVisualTree(depth + 1, VisualTreeHelper.GetChild(obj, i)); } } } }