当前位置:编程学习 > C#/ASP.NET >>

为什么我的WPF TreeView 只显示第一级树呢?

xaml 代码如下:
<TreeView Background="Transparent" Grid.Row="1" Grid.Column="0" Name="MainWindowTreeView" BorderThickness="1" BorderBrush="Silver">
            <TreeView.ItemTemplate>
                <HierarchicalDataTemplate>
                    <StackPanel Orientation="Horizontal">
                        <TextBlock Text="{Binding Name}" FontFamily="Consolas" FontSize="16" Foreground="DimGray"/>
                    </StackPanel>
                    <HierarchicalDataTemplate.ItemTemplate>
                        <HierarchicalDataTemplate ItemsSource="{Binding DataTables}">
                            <StackPanel Orientation="Horizontal">
                                <TextBlock Text="{Binding Name}"/>
                            </StackPanel>
                        </HierarchicalDataTemplate>
                    </HierarchicalDataTemplate.ItemTemplate>
                </HierarchicalDataTemplate>
            </TreeView.ItemTemplate>
        </TreeView>


添加数据源的代码:
var mainWindow = Application.Current.MainWindow as MainWindow;

            if (mainWindow != null)
            {
                List<DataBase> dataBases = new List<DataBase>();
                DataBase dataBase = new DataBase();
                dataBase.Name = "Adamas";
                DataTable dataTable = new DataTable();
                dataTable.Name = "Windows";
                dataBase.DataTables = new ObservableCollection<DataTable>();
                dataBase.DataTables.Add(dataTable);
                dataBases.Add(dataBase);
                mainWindow.MainWindowTreeView.ItemsSource = dataBases;

                //AccessToSqlServer.ConnectionString = this.ConnectionString;
                //mainWindow.MainWindowTreeView.ItemsSource = AccessToSqlServer.GetDataBaseList();
            }


实体DataBase代码:
public class DataBase
    {
        /// <summary>
        /// 获取或设置数据表集合
        /// </summary>
        public ObservableCollection<DataTable> DataTables;

        /// <summary>
        /// Gets or sets Name.
        /// </summary>
        [ColumnName("name")]
        public string Name { get; set; }

        /// <summary>
        /// Gets or sets CreatedTime.
        /// </summary>
        [ColumnName("crdate")]
        public DateTime CreatedTime { get; set; }

        /// <summary>
        /// Gets or sets FileName.
        /// </summary>
        [ColumnName("filename")]
        public string FileName { get; set; }
    }


实体:DataTable代码
/// <summary>
    /// 数据表实体类
    /// </summary>
    public class DataTable
    {
        /// <summary>
        /// 列集合
        /// </summary>
        public ObservableCollection<Column> Columns;

        /// <summary>
        /// Gets or sets Name.
        /// </summary>
        [ColumnName("name")]
        public string Name { get; set; }

        /// <summary>
        /// Gets or sets CreatedTime.
        /// </summary>
        [ColumnName("crdate")]
        public DateTime CreatedTime { get; set; }

        /// <summary>
        /// Gets or sets FileName.
        /// </summary>
        [ColumnName("type")]
        public string Type { get; set; }
    }


显示界面:
--------------------编程问答-------------------- 这是显示界面 --------------------编程问答-------------------- 解决问题的人再追加30分 --------------------编程问答-------------------- http://www.cnblogs.com/izualx/archive/2011/02/03/1949055.html --------------------编程问答-------------------- http://blog.163.com/qiulei_21/blog/static/35071722201122452818390/ --------------------编程问答--------------------
引用 3 楼 a13051335368 的回复:
http://www.cnblogs.com/izualx/archive/2011/02/03/1949055.html

这个博文我看过了,我没发现我哪儿有问题啊?你仔细看看我的代码呢 --------------------编程问答--------------------
引用 4 楼 a13051335368 的回复:
http://blog.163.com/qiulei_21/blog/static/35071722201122452818390/

这个是通过继承TreeViewItem的方式来实现的,可我不想用这种方式 --------------------编程问答-------------------- 有没有人来帮帮我啊!! --------------------编程问答-------------------- 没看见递归绑定所有子节点的部分。 --------------------编程问答--------------------
引用 8 楼 yilanwuyu123 的回复:
没看见递归绑定所有子节点的部分。

不是写在ItemTemplate中就可以了吗,需要递归吗? --------------------编程问答-------------------- 唉!怎么搞的,这么简单的问题都弄不清楚,烦死了 --------------------编程问答-------------------- 来个人帮帮忙啊,小弟叩谢啦 --------------------编程问答--------------------
引用 9 楼 AdamasTT 的回复:
引用 8 楼 yilanwuyu123 的回复:没看见递归绑定所有子节点的部分。
不是写在ItemTemplate中就可以了吗,需要递归吗?
 

你这绑定只是找到了根节点的数据,空间需要遍历树的构成生成树自身的item,而你没有代码完成树的构成,所以只能出现根借点。 --------------------编程问答-------------------- WPF我并不熟,看看是不是这个地方吧
ackground="Transparent" Grid.Row="1" Grid.Column="0" --------------------编程问答--------------------
引用 12 楼 yilanwuyu123 的回复:
引用 9 楼 AdamasTT 的回复:引用 8 楼 yilanwuyu123 的回复:没看见递归绑定所有子节点的部分。
不是写在ItemTemplate中就可以了吗,需要递归吗? 

你这绑定只是找到了根节点的数据,空间需要遍历树的构成生成树自身的item,而你没有代码完成树的构成,所以只能出现根借点。

那怎么做呢?还请您指教一下,谢谢 --------------------编程问答--------------------
引用 13 楼 dongxinxi 的回复:
WPF我并不熟,看看是不是这个地方吧
ackground="Transparent" Grid.Row="1" Grid.Column="0"

谢谢你的好意。 --------------------编程问答-------------------- 来人呐,啊啊啊啊.... --------------------编程问答-------------------- 你这个树目前只看到绑定了数据源和显示的文字,但没看到你有递归显示的逻辑啊!
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,