silverlight
发布时间:2022-05-04 发布网站:大佬教程 code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用Silverlight Toolkit TreeView(树形控件),大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
概述
尽管在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
>
下面是
相应的XAM
l.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;
}
}
下面演示一下
效果,如下图所示:
当前TreeView控件还
支持样式定义,比如可以给每个树形结点前
添加check
Box和
一个小图标,这里我们使用下
面样式:
@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;
下面就是应用了该样式的运行
效果:
当前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
>
运行该样式的
效果如下图所示:
好了,今天的
内容就先到这里了。
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,请注明来意。