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的开发方式,虽然现在大家都在搞网页,呵呵)
posted on 2010-04-01 11:34  forrestsun  阅读(645)  评论(0编辑  收藏  举报