zoukankan      html  css  js  c++  java
  • HierarchicalDataTemplate

    之前写控件模板的时候已经用过,当时觉得理解了,一下手,又有很多问题,有些概念不清楚,有些属性不知道什么意思,今天就细化一下

    这是MSDN上的一个例子,在这个示例中, ListLeagueList 是 League 对象的列表。每 League 对象具有 Name 和 Division 对象的集合。每 Division 具有 Name 和 Team 对象的集合,因此,每 Team 对象具有 Name,就是这样一个数据结构

    View Code
    <Window x:Class="SDKSample.Window1"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      Title="HierarchicalDataTemplate Sample"
      xmlns:src="clr-namespace:SDKSample">
      <DockPanel>
        <DockPanel.Resources>
          <src:ListLeagueList x:Key="MyList"/>
    
          <HierarchicalDataTemplate DataType    = "{x:Type src:League}"
                                    ItemsSource = "{Binding Path=Divisions}">
            <TextBlock Text="{Binding Path=Name}"/>
          </HierarchicalDataTemplate>
    
          <HierarchicalDataTemplate DataType    = "{x:Type src:Division}"
                                    ItemsSource = "{Binding Path=Teams}">
            <TextBlock Text="{Binding Path=Name}"/>
          </HierarchicalDataTemplate>
    
          <DataTemplate DataType="{x:Type src:Team}">
            <TextBlock Text="{Binding Path=Name}"/>
          </DataTemplate>
        </DockPanel.Resources>
    
        <Menu Name="menu1" DockPanel.Dock="Top" Margin="10,10,10,10">
            <MenuItem Header="My Soccer Leagues"
                      ItemsSource="{Binding Source={StaticResource MyList}}" />
        </Menu>
    
        <TreeView>
          <TreeViewItem ItemsSource="{Binding Source={StaticResource MyList}}" Header="My Soccer Leagues" />
        </TreeView>
    
      </DockPanel>
    </Window>

    所谓HierarchicalDataTemplate ,按字面意思理解,就是分层数据模板,专门用来定义分层的数据类型显示格式的一个模板,最常用的就是TreeView、Menu,

    挨个属性解释,

    DataType   指当前模板对应哪种数据类型,也就是说哪个数据类型的数据进来后用此种格式显示

    ItemsSource 当前类型的子项集合取哪个属性,这个属性应该是个IEnumerable类型的

    然后就没什么了

    标签内定义显示的具体格式,用什么空间显示,绑定哪个字段属性

    当然 给控件赋值的时候一般是这种格式

    TreeView.ItemsSource=.....

    等号右边是一个IEnumerable类型的,里面的项会作为控件的数据源,项的集合就是控件Item的集合

    最终显示格式是这样的

    纸上得来终觉浅,绝知此事要躬行

  • 相关阅读:
    C语言 sprintf 函数 C语言零基础入门教程
    C语言 printf 函数 C语言零基础入门教程
    C语言 文件读写 fgets 函数 C语言零基础入门教程
    C语言 文件读写 fputs 函数 C语言零基础入门教程
    C语言 fprintf 函数 C语言零基础入门教程
    C语言 文件读写 fgetc 函数 C语言零基础入门教程
    C语言 文件读写 fputc 函数 C语言零基础入门教程
    C语言 strlen 函数 C语言零基础入门教程
    Brad Abrams关于Naming Conventions的演讲中涉及到的生词集解
    适配器模式
  • 原文地址:https://www.cnblogs.com/goldren/p/2834540.html
Copyright © 2011-2022 走看看