using System.Windows; using System.Windows.Controls; using System.Windows.Media; namespace _5_WPF模板和自定义元素; public partial class VisualTreeDisplayWindow : Window { public VisualTreeDisplayWindow() { InitializeComponent(); } public void ShowVisualTree(DependencyObject element) { // 清除树 TreeViewElement.Items.Clear(); // 递归添加元素及其子元素 ProcessElement(element, null); } private void ProcessElement(DependencyObject element, TreeViewItem? previousItem) { var item = new TreeViewItem { Header = element.GetType().Name, IsExpanded = true }; // 检查跟节点,如果不为空添加子节点 if (previousItem == null) TreeViewElement.Items.Add(item); else previousItem.Items.Add(item); for (var i = 0; i < VisualTreeHelper.GetChildrenCount(element); i++) ProcessElement(VisualTreeHelper.GetChild(element, i), item); } }