wpf_可视树
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
开发工具与关键技术: Visual Studio 2015 * SQL Server
作者:
撰写时间:2019年07月17日
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
可视树是由界面上可见的元素构成的,这些元素主要是由从Visual或者Visual3D类中派生出来的类。可视树遍历使用VisualTreeHelper类。
<Grid>
<DockPanel>
<Button DockPanel.Dock="Top" Click="Button_Click" Content="获取逻辑树和可视树"></Button>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<DockPanel Grid.Column="1">
<TextBlock DockPanel.Dock="Top" Text="可视树"></TextBlock>
<TreeView Name="tvVisualTree"></TreeView>
</DockPanel>
</Grid>
</DockPanel>
</Grid>
//获取可视树
static string GetTypeDescription(object obj)
{
return obj.GetType().FullName;
}
private void Button_Click(object sender, RoutedEventArgs e)
{
//this.tvLogicTree.Items.Add(GetLogicTree(this));
this.tvVisualTree.Items.Add(GetVisualTree(this));
}
public static TreeViewItem GetVisualTree(DependencyObject obj)
{
if (obj == null)
{
return null;
}
TreeViewItem treeItem = new TreeViewItem { Header = GetTypeDescription(obj), IsEnabled = true };
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)
{
var chlid = VisualTreeHelper.GetChild(obj, i);
var item = GetVisualTree(chlid);
if (item != null)
{
treeItem.Items.Add(item);
}
}
return treeItem;
}