40 lines
1.0 KiB
C#
40 lines
1.0 KiB
C#
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);
|
|
}
|
|
} |