//前台界面
<TreeView Name="tvProperties" Width="250" Padding="0" Margin="0" BorderThickness="1">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate DataType="{x:Type local:ComponentModel}" ItemsSource="{Binding Path=Children}">
<StackPanel Orientation="Horizontal">
<TextBlock VerticalAlignment="Center" Text="{Binding ComponentName}"></TextBlock>
<StackPanel.ToolTip>
<TextBlock VerticalAlignment="Center" Text="{Binding ComponentName}" TextWrapping="Wrap" MaxWidth="200" ></TextBlock>
</StackPanel.ToolTip>
</StackPanel>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
//初始数据集
List<ComponentModel> initializeDataSet = new List<ComponentModel>();
initializeDataSet.Add(new ComponentModel() { ComponentID = 1, ComponentName = "test1", Level = 1, ParentID = 0 });
initializeDataSet.Add(new ComponentModel() { ComponentID = 2, ComponentName = "test2", Level = 2, ParentID = 1 });
initializeDataSet.Add(new ComponentModel() { ComponentID = 3, ComponentName = "test3", Level = 3, ParentID = 2 });
//加载数据
tvProperties.ItemsSource =LoadTreeView(0);
List<ComponentModel> LoadTreeView(int id)
{
List<ComponentModel> node = initializeDataSet.FindAll(s=>s.ParentID.Equals(id));
foreach (var item in node)
{
item.Children = LoadTreeView(item.ComponentID);
}
return node;
}
internal class ComponentModel
{
public int ComponentID { get; set; }
public string ComponentName { get; set; }
public int ParentID { get; set; }
public int Level { get; set; }
public string CategoryName { get; set; }
public List<ComponentModel> Children { get; set; }
public ComponentModel()
{
Children = new List<ComponentModel>();
}
}