TreeView控件可以通过HierarchicalDataTemplate 和 DataTemplate来自定义。 1)HierarchicalDataTemplate用来支持HeaderedItemsControl,其中DataType指定当前的数据类型, 只有符合这个类型才使用HierarchicalDataTemplate ItemsSource = “{Binding Path=Divisions}”> 2)对于TreeView控件, 我们可以只指定一个HierarchicalDataTemplate, 而保证数据结构每层的 get; set;} public string Id {get; set;} public List Nodes {get; set;} } 3)另外一种就是如1)所示, 我们可以针对每层的数据层指定HierarchicalDataTemplate schemas.microsoft.com/winfx/2006/xaml/presentation” xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml” Title=”HierarchicalDataTemplate
今天给大家介绍的是用TreeView与HierarchicalDataTemplate进行显示。 实现效果如下所示: 如果你对此感兴趣,可以接着往下阅读。 通过HierarchicalDataTemplate,您可以指定一个模板,用于呈现数据对象本身,以及一个模板,用于呈现其子项。 通常,您会在ItemsSource属性中指定数据源,然后使用HierarchicalDataTemplate定义每个级别的数据对象应该如何呈现。 通过使用HierarchicalDataTemplate,您可以更灵活地控制数据的呈现方式,使您能够创建具有深层次结构的动态UI。 HierarchicalDataTemplate的使用 xaml: <Window.Resources> <HierarchicalDataTemplate DataType = "{x:Type
技术要点与实现 本文的技术关键点是层级式数据模板HierarchicalDataTemplate。 HierarchicalDataTemplate是一个特殊的DataTemplate,它能够包装第二层模板。通过ItemsSource属性查找下一层级的数据集合,并将它提供给第二层模板。 <TextBlock Text="{Binding Path=SchoolName}" /> </HierarchicalDataTemplate> <HierarchicalDataTemplate "> <TextBlock Text="{Binding Path=ClassName}" /> </HierarchicalDataTemplate> <HierarchicalDataTemplate 定义好了数据模型和相应的层级式数据模板HierarchicalDataTemplate后,就可以直接把数据元绑定到TreeView上了。
8 public class File 9 { 10 public string Name{set;get;} 11 } 而在XAML中直接用两个DataType类型为Folder和File的HierarchicalDataTemplate items.Add(f); 9 return items; 10 } 11 } 我们在Folder类中定义这个Items属性,接下来就是XAML部分 1 <HierarchicalDataTemplate Model:Folder}" ItemsSource="{Binding Items}"> 2 <TextBlock Text="{Binding Name}" /> 3 </HierarchicalDataTemplate
--定义模板--> <common:HierarchicalDataTemplate x:Key="NodeTemplate" ItemsSource="{Binding Children --子节点模板--> <telerik:HierarchicalDataTemplate x:Key="ChildTemplate" ItemTemplate="{StaticResource ItemsSource="{Binding Children}"> <TextBlock Text="{Binding Name}" /> </telerik:HierarchicalDataTemplate --父节点模板--> <telerik:HierarchicalDataTemplate x:Key="ParentTemplate" ItemTemplate="{StaticResource ItemsSource="{Binding Children}"> <TextBlock Text="{Binding Name}" /> </telerik:HierarchicalDataTemplate
" ItemsSource="{Binding Children}" > <TreeView.ItemTemplate> <HierarchicalDataTemplate </Border.ContextMenu> </Border> <HierarchicalDataTemplate.Triggers Visibility" Value="Collapsed"/> </DataTrigger> </HierarchicalDataTemplate.Triggers > </HierarchicalDataTemplate> </TreeView.ItemTemplate>
--子节点模板--> <telerik:HierarchicalDataTemplate x:Key="ChildTemplate" ItemTemplate="{StaticResource --父节点模板--> <telerik:HierarchicalDataTemplate x:Key="ParentTemplate" ItemTemplate="{StaticResource --菜单项模板--> <telerik:HierarchicalDataTemplate x:Key="ChildTemplate"> <StackPanel Margin="0,5,0,0" TextAlignment="Center"></TextBlock> </StackPanel> </telerik:HierarchicalDataTemplate --菜单组模板--> <telerik:HierarchicalDataTemplate x:Key="ParentTemplate" ItemTemplate="{StaticResource
="0" ItemsSource="{Binding TreeList}"> <TreeView.ItemTemplate> <HierarchicalDataTemplate Grid.Column="1" Margin="5,0,0,0" FontSize="13"/> </Grid> <HierarchicalDataTemplate.Triggers Property="Width" Value="13"/> </DataTrigger> </HierarchicalDataTemplate.Triggers > </HierarchicalDataTemplate> </TreeView.ItemTemplate>
="0" ItemsSource="{Binding TreeList}"> <TreeView.ItemTemplate> <HierarchicalDataTemplate Grid.Column="1" Margin="5,0,0,0" FontSize="13"/> </Grid> <HierarchicalDataTemplate.Triggers Property="Width" Value="13"/> </DataTrigger> </HierarchicalDataTemplate.Triggers > </HierarchicalDataTemplate> </TreeView.ItemTemplate>
TreeNodes.Add(foods); } } <TreeView ItemsSource="{Binding TreeNodes}"> <TreeView.ItemTemplate> <HierarchicalDataTemplate ItemsSource="{Binding Children}"> <Label Content="{Binding Name}"/> </HierarchicalDataTemplate
Binding Screen.DepartmentTree}"> <sdk:TreeView.ItemTemplate> <sdk:HierarchicalDataTemplate Margin="5,0" Width="74" /> </StackPanel> </sdk:HierarchicalDataTemplate
Binding Children}" BorderThickness="2"> <l:TreeListView.ItemTemplate > <HierarchicalDataTemplate Margin="2 0"/> </StackPanel> </Border> </HierarchicalDataTemplate
Title="MainWindow" Height="350" Width="525" Loaded="LoadedEvent"> <Window.Resources> <HierarchicalDataTemplate ContentPresenter Content="{Binding Path=Name,Mode=OneTime}" Margin="2,0"/> </StackPanel> </HierarchicalDataTemplate
TvList_SelectedItemChanged"> <TreeView.ItemTemplate> <HierarchicalDataTemplate <TextBlock Text="{Binding MenuName}" VerticalAlignment="Center" /> </HierarchicalDataTemplate
有一个重要的属性HierarchicalDataTemplate对象用于设置层级数据模板。
Menu.ItemContainerStyle> <Menu.ItemTemplate> <HierarchicalDataTemplate <TextBlock Text="{Binding MenuName}" VerticalAlignment="Center"/> </HierarchicalDataTemplate
数据绑定支持:天然支持HierarchicalDataTemplate,适合层级数据的展示和操作。
FrameworkTemplate,这是控件模板的基类,具体来说,有这些类型: ControlTemplate DataTemplate ItemsPanelTemplate ItemContainerTemplate HierarchicalDataTemplate
EventTrigger> </i:Interaction.Triggers> <TreeView.ItemTemplate > <HierarchicalDataTemplate Binding Text}" /> </StackPanel> </Border> </HierarchicalDataTemplate
能够帮助层级控件显示层级数据的模板是HierarchicalDataTemplate。这部分例子单独分篇讲(因为本质上是一样的,属于应用了,本文的目的是对整个模板有框架性理解,而不是细致入微)。