欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Silverlight 控件学习-Treeview

程序员文章站 2022-06-08 10:26:32
...

Silverlight已升级到4了,要抓紧时间学习了。这段时间把自己学习各控件的代码整理下,放到博客上给自己留个记录。也对和我一样的初学者起到共同交流的地方。

特别说明:代码中是在学习别人的代码基础上写出的,如果您是高手就不要看了,免得担误您的时间。

 

Treeview学习

1、Treeview的基本使用

这个比较简单,我直接拿了Microsoft Silverlight 3 Toolkit的代码自己重写了下(看懂别人的代码和自己复写代码还是有区别的,呵呵,建议和我一样的初学者也写写,有时可能一个引用没写就会和别人的代码差出十万八千里。)

首先在SilverLight工程中引用System.Windows.Controls.Toolkit

页面中声明

        xmlns:system="clr-namespace:System;assembly=mscorlib"
        xmlns:controls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls"
        xmlns:toolkit="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Toolkit"

下面的代码中直接拷贝到新建立的页面中使用就可以了

        <StackPanel x:Name="CP">
            <controls:TreeView Margin="5">
                <controls:TreeViewItem Header="格式数据测试" >
                    <controls:TreeViewItem Header="格式数据1" Foreground="Blue"/>
                    <controls:TreeViewItem Header="格式数据2" Foreground="Red"/>
                    <controls:TreeViewItem Header="格式数据3" Foreground="Pink"/>
                    <controls:TreeViewItem Header="格式数据4" IsEnabled="False"/>
                </controls:TreeViewItem>
            </controls:TreeView>

            <controls:TreeView>
                <controls:TreeViewItem Header="字符串数据">
                    <system:String>字符串数据1</system:String>
                    <system:String>字符串数据2</system:String>
                    <system:String>字符串数据3</system:String>
                </controls:TreeViewItem>
            </controls:TreeView>

            <controls:TreeView>
                <controls:TreeViewItem Header="数据源绑定">
                    <controls:TreeViewItem.ItemsSource>
                        <toolkit:ObjectCollection>
                            <system:String>字符串数据1</system:String>
                            <system:String>字符串数据2</system:String>
                            <system:String>字符串数据3</system:String>
                        </toolkit:ObjectCollection>
                    </controls:TreeViewItem.ItemsSource>
                </controls:TreeViewItem>
            </controls:TreeView>

            <controls:TreeView Margin="5">
                <controls:TreeViewItem Header="树下使用用其它控件" >
                    <controls:TreeViewItem Header="TT">
                        <Button Content="按钮"/>
                        <CheckBox Content="单选"/>
                        <RadioButton Content="多选"/>
                    </controls:TreeViewItem>
                </controls:TreeViewItem>
            </controls:TreeView>
        </StackPanel>

2、动态实现一个只有子节点有checkbox的树(有些项目会需要)

还是在上面实现的页面的基础上,在代码层我做了个基本测试,首先写个方法LoadTree。通过上面的代码我们可以看到一些东西

如果要实现一个树,外层必须是TreeView ,在其内层可实现TreeViewItem 的嵌套,同时不限于只嵌套TreeViewItem ,可以是其它控件或是字符串等,这为我想实现的只有子节点的树提供了可能(实现说明,可能有高手有更好的实现方法,我只是记录自己的想法)

下面是实现方法,代码很简单,如果真要做的话还可以实现一个递归来处理这些繁琐的事情

 private void LoadTree()
        {
            //创建根目录
            TreeView tv = new TreeView();
            //创建二级节点
            TreeViewItem tvItem = new TreeViewItem();
            tvItem.Header = "动态测试1";
            //创建三级节点
            TreeViewItem tvItem1 = new TreeViewItem();
            tvItem1.Header = "动态测试2";

            //创建叶子节点所需要的CheckBox
            CheckBox ck1 = new CheckBox() { Content = "测试" };

            //逐一加入上层控件
            tvItem1.Items.Add(ck1);
            tvItem.Items.Add(tvItem1);
            tv.Items.Add(tvItem);
            //最后将这棵树放入容器
            CP.Children.Add(tv);
        }
最后在页面初始化时调用就可以了(这里需要注意的是,这是一个DEMO,如果真正在项目时尽量不要在程序初始化时加入太多东西,
因为必竟这是以网络形式的开发,我还是喜欢C/S的开发方式,虽然现在大家都在搞网页,呵呵)

转载于:https://www.cnblogs.com/forrestsun/archive/2010/04/01/1702103.html