打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
[WPF]TreeView的数据分层模板

[WPF](小结4)TreeView的数据分层模板

时间:2012-06-13 20:15来源:博客园 作者:小颗豆 点击: 212次
  

 

  前边研究的是某控件嵌套某控件,这里相当于树嵌套树,但这里不能这么叫,树很特殊,它有一个分层数据模板:HierarchicalDataTemplate,现在来看如何使用,

  第一:选构建题目类,再建一个选项类,题目类集合中的每个项包含一个选项类集合,即数组嵌套数组,C#语句如下:

  (为方便看清语句,类直接写在主程序中)

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Windows;using System.Windows.Controls;using System.Windows.Data;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Imaging;using System.Windows.Navigation;using System.Windows.Shapes;using System.Collections.ObjectModel;//ObservableCollection命名空间namespace TreeviewWithHierarchical{    /// <summary>    /// MainWindow.xaml 的交互逻辑    /// </summary>    public partial class MainWindow : Window    {        public MainWindow()        {            InitializeComponent();        }        //题目类        class question        {            public Int32 questionID//题目ID号            { get; set; }            public string questionName//题目名,比如:第1题或第2题等            { get; set; }            public ObservableCollection<choseItem> choseItems//某题中"选项类"的集合,比如A-D            { get; set; }            public question(Int32 _id, string _questionname, ObservableCollection<choseItem> _choseitems)//构造函数            {                questionID = _id;                questionName = _questionname;                choseItems = _choseitems;            }        }        //选项类        class choseItem        {            public string ChoseName//选项名,比如:A,B,C,D之类            { get; set; }            public string ChoseContent//选项内容            { get; set; }        }        ObservableCollection<question> Questions = new ObservableCollection<question>();//题目数组        private void Window_Loaded(object sender, RoutedEventArgs e)        {            string[] CharStr = new string[4] { "A", "B", "C", "D" };            for (int i = 0; i < 5; i++)            {                ObservableCollection<choseItem> ChoseItems = new ObservableCollection<choseItem>();//选项数组                               for (int j = 0; j < 4; j++)                {                    choseItem item = new choseItem();//选项类                    item.ChoseName = CharStr[j] + ":";                    item.ChoseContent = "选项内容举例...";                    ChoseItems.Add(item);                }                Questions.Add(new question(i, "__第" + (i + 1).ToString() + "", ChoseItems));            }            treeview1.ItemsSource = Questions;        }    }}

  第二步:主界面的绑定语句如下:

<Window x:Class="TreeviewWithHierarchical.MainWindow"        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"        Title="TreeviewWithHierarchical" Height="350" Width="525" Loaded="Window_Loaded">    <Window.Resources >        <!-- TreeView分层数据模板-->        <HierarchicalDataTemplate ItemsSource="{Binding choseItems}" x:Key="myTreeviewWithHierarchical">            <StackPanel Orientation="Horizontal" >                <CheckBox Margin="3" IsChecked="False" />                <Image Source="question2.png" Width="24" Height="24" />                <TextBlock Margin="3" Text="{Binding questionName}" />            </StackPanel>            <HierarchicalDataTemplate.ItemTemplate >                <DataTemplate >                    <Border Margin="3" BorderBrush="Blue" BorderThickness="1" CornerRadius="3" >                        <StackPanel Orientation="Horizontal" >                            <TextBlock Margin="3" Text="选项名:" />                            <TextBlock Margin="3" Text="{Binding ChoseName}" />                            <TextBlock Margin="3" Text="内容:" />                            <TextBlock Margin="3" Text="{Binding ChoseContent}" />                        </StackPanel>                    </Border>                </DataTemplate>            </HierarchicalDataTemplate.ItemTemplate>        </HierarchicalDataTemplate>    </Window.Resources>       <Grid>        <TreeView Name="treeview1" Margin="5" ItemTemplate="{StaticResource myTreeviewWithHierarchical}" />    </Grid></Window>

  第三:小结

  1:TreeView可以使用分层数据模板HierarchicalDataTemplate,也可以不使用,根据不同的情况来进行选择

  比如前边的例子直接操作TreeViewItem即可:

<DataTemplate  x:Key="myTreeViewGrid">            <TreeViewItem Name="treeviewitem1" >                <TreeViewItem.Header >   ......                </TreeViewItem.Header>   ......                <DataGrid ItemsSource="{Binding choseItems}"  >                </DataGrid>            </TreeViewItem></DataTemplate>
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
在SilverLight中实现TreeView控件的数据无限分层显示_银光中国 Silve...
c#-文件夹浏览器列出WPF中的所有系统驱动器
WPF之HierarchicalDataTemplate
WPF TreeView Win8 样式
WPF/Silverlight HierarchicalDataTemplate 模版的使用
WPF快速入门系列(7)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服