silverlight   发布时间:2022-05-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用Silverlight Toolkit TreeView(树形控件)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_696_1@

概述

     尽管在Silverlight Toolkit中有相关的DEMO来演示如何使用TreeView控件,但其还是有一些功能没被演示出来。因为在我们平时开发过程中,数据是被动态查询获取的(不是DEMO中的静态文件方式)。因此今天就演示一下如何使用WCF来获取相应数据并使用TreeView来动态加载相应结点信息。      首先,我们要创建一个WCF服务来获取相应的树形节点数据信息,如下:   
     尽管在Silverlight Toolkit中有相关的DEMO来演示如何使用TreeView控件,但其还是有一些功能没被演示出来。因为在我们平时开发过程中,数据是被动态查询获取的(不是DEMO中的静态文件方式)。因此今天就演示一下如何使用WCF来获取相应数据并使用TreeView来动态加载相应结点信息。

     首先,我们要创建一个WCF服务来获取相应的树形节点数据信息,如下:
    
public   class  ForumInfo
{
    
int  ForumID {  get set ; }
    
 ParendID {  String  Forumname {  ; }
}

[serviceContract(Namespace 
=   "" )]
[AspNetCompatibilityrequirements(requirementsMode 
 AspNetCompatibilityrequirementsMode.Allowed)]
 Dateservice
{
 
    [OperationContract]
    
 List < ForumInfo >  GetForumData()
    {
        List
 forumList  new ();
        forumList.Add(
 ForumInfo() { ForumID  1 , ParendID  0 mname  " 笔记本版块 " });
        forumList.Add(
2 台式机版块  });

        forumList.Add(
3 Dell笔记本  });
        forumList.Add(
4 IBM笔记本 5 IBM-T系列 6 IBM-R系列 7 联想台式机 8 方正台式机 9 HP台式机 10 联想家悦H系列 11 联想IdeaCentre系列  });

        
return  forumList;
    }
}



     从代码中可看出,ForumInfo是使用ParendID来记录父结点信息并以此来创建一个树形结构的,而方法
GetForumData()即是演示了我们平时查询数据的过程。我们在Silverlight中添加对该服务的引用即可。

     我们在Silverlight中添加对Silverlight Toolkit相关DLL引用,然后向XAML文件上拖入一个TREEVIEW控件。并将其命名为“TreeOfLife”,最后我们再放几个TextBlock来显示树形结点被点击后显示相应的
ForumInfo信息。最后XAML中的内容如下所示:
    
< controls:TreeView  x:Name ="TreeOfLife"  Margin ="5"  Grid.column ="0"  Grid.Row ="1"   
          SELEctedItemChanged
="TreeOfLife_SELEctedItemChanged" />

Border  BorderBrush ="Gray"  BorderThickness  Padding ="8" ="8,0" ="1" >
    
StackPanel  ="DetailsPanel" ="4"
        
Orientation ="Horizontal"
            
TextBlock  Text ="版块ID: "  FontWeight ="Bold"    =" {Binding ForumID} " </ StackPanel ="版块名称: " {Binding Forumname} ="版块信息: " ="DetailText"  textwrapping ="Wrap"  text "
Border >


     下面是相应的XAMl.CS文件中的内容,主要是使用递归方式遍历数据列表并创建相关的结点信息:
     
partial  Page : UserControl
{
     DateserviceClient dataserviceClient 
 DateserviceClient();

     ObservableCollection
 ObservableCollection ();

     
 Page()
     {
         InitializeComponent();

         
// 此样式只添加在根结点上
         
TreeOfLife.ItemContainerStyle = this.resources["RedItemStyle"] as Style;               
         dataserviceClient.GetForumDataCompleted
+=  EventHandler GetForumDataCompletedEventArgs (dataserviceClient_GetForumDataCompleted);
         dataserviceClient.GetForumDataAsync();
     }

     
void  dataserviceClient_GetForumDataCompleted( object  sender, GetForumDataCompletedEventArgs E)
     {
         
try
         {
             forumList 
 e.Result;
             AddTreeNode(
null );  
         }
         
catch
         {
             
throw  NotImplementedException();
         }
     }

     
private  AddTreeNode(  parentID, TreeViewItem treeViewItem)
     {
         List
 result   (from forumInfo  in  forumList
                                   
where  forumInfo.ParendID  ==  parentID
                                   SELEct forumInfo).ToList
();

         
if  (result.Count  )
         {
             
foreach  (ForumInfo foruminfo   result)
             {
                 TreeViewItem objTreeNode 
 TreeViewItem();
                 objTreeNode.Header 
 foruminfo.Forumname;
                 objTreeNode.DataCo@R_874_10443@t 
 foruminfo;

                 
此样式将会添加的所有叶子结点上
                 
objTreeNode.ItemContainerStyle = this.resources["RedItemStyle"] as Style;
 
                 
添加根节点                    (treeViewItem  )
                 {
                     TreeOfLife.Items.Add(objTreeNodE);
                 }
                 
else
                 {                    
                     treeViewItem.Items.Add(objTreeNodE);
                 }
                 AddTreeNode(foruminfo.ForumID, objTreeNodE);
             }
         }
     }


     
 TreeOfLife_SELEctedItemChanged(  routedPropertyChangedEventArgs  E)
     {
         TreeViewItem item 
 e.NewValue  as  TreeViewItem;
         ForumInfo fi 
 item.DataCo@R_874_10443@t   ForumInfo;

         DetailsPanel.DataCo@R_874_10443@t 
 fi;
     }
}


    下面演示一下效果,如下图所示:
    
   

使用Silverlight Toolkit TreeView(树形控件)


    
    
      当前TreeView控件还支持样式定义,比如可以给每个树形结点前添加checkBox一个小图标,这里我们使用下
面样式:
   
@H_947_502@ UserControl.resources Style  x:Key ="RedItemStyle"  TargetType ="controls:TreeViewItem" Setter  Property ="HeaderTemplate"
                
Setter.Value
                    
DataTemplate
                        

                            
checkBox  Image  source ="image/default.png" {Binding}  Foreground ="Red"  FontStyle ="Italic" Setter ="IsExpanded"  Value ="True" Style >
    
    然后在cs文件中使用下面语句将该样式绑定到TreeView上:
    
   
TreeOfLife.ItemContainerStyle  this .resources[ RedItemStyle  Style;
    
    下面就是应用了该样式的运行效果
    
   

使用Silverlight Toolkit TreeView(树形控件)


    
    当前TreeView中定义样式模版还可以使用ItemTemplate,下面是一段样式代码:
@H_197_615@ controls:TreeView.ItemTemplate controls:HierarchicalDataTemplate  Itemssource {Binding Subclasses}
            ItemContainerStyle
{Staticresource ExpandedItemStylE} {Binding rank}  FontSize ="0 0 0 -5" {Binding Classification} controls:HierarchicalDataTemplate >


    运行该样式的效果如下图所示:
    
   

使用Silverlight Toolkit TreeView(树形控件)


    
    
    好了,今天的内容就先到这里了。
    
    DEMO下载,请 点击这里:)
    
    
    原文链接: [url]http://daizhj.blog.51cto.com/285189/128209[/url]     作者: daizhj,代震军     Tags: silverlight,treeview,树形,控件          网址: [url]http://daizhj.blog.51cto.com/ [/url]    

大佬总结

以上是大佬教程为你收集整理的使用Silverlight Toolkit TreeView(树形控件)全部内容,希望文章能够帮你解决使用Silverlight Toolkit TreeView(树形控件)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。