使用Silverlight Toolkit TreeView树形控件Word格式文档下载.docx
《使用Silverlight Toolkit TreeView树形控件Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《使用Silverlight Toolkit TreeView树形控件Word格式文档下载.docx(8页珍藏版)》请在冰点文库上搜索。
AspNetCompatibilityRequirementsMode.Allowed)]
DateService
[OperationContract]
List<
ForumInfo>
GetForumData()
forumList
new
();
forumList.Add(new
ForumInfo()
1,
0,
笔记本版块"
});
2,
台式机版块"
3,
Dell笔记本"
4,
IBM笔记本"
5,
IBM-T系列"
6,
IBM-R系列"
7,
联想台式机"
8,
方正台式机"
9,
HP台式机"
10,
联想家悦H系列"
11,
联想IdeaCentre系列"
return
forumList;
从代码中可看出,ForumInfo是使用ParendID来记录父结点信息并以此来创建一个树形结构的,而方法:
GetForumData()即是演示了我们平时查询数据的过程。
我们在Silverlight中添加对该服务的引用即可。
我们在Silverlight中添加对SilverlightToolkit相关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,0,0"
>
StackPanel
DetailsPanel"
4"
Orientation="
Horizontal"
TextBlock
Text="
版块ID:
FontWeight="
Bold"
{Binding
ForumID}"
/StackPanel>
版块名称:
ForumName}"
版块信息:
DetailText"
TextWrapping="
Wrap"
/Border>
下面是相应的XAML.CS文件中的内容,主要是使用递归方式遍历数据列表并创建相关的结点信息:
partial
Page
:
UserControl
DateServiceClient
dataServiceClient
DateServiceClient();
ObservableCollection<
Page()
InitializeComponent();
//此样式只添加在根结点上
//TreeOfLife.ItemContainerStyle
this.Resources["
RedItemStyle"
]
as
Style;
dataServiceClient.GetForumDataCompleted+=new
EventHandler<
GetForumDataCompletedEventArgs>
(dataServiceClient_GetForumDataCompleted);
dataServiceClient.GetForumDataAsync();
void
dataServiceClient_GetForumDataCompleted(object
sender,
GetForumDataCompletedEventArgs
e)
try
e.Result;
AddTreeNode(0,
null);
catch
throw
NotImplementedException();
private
AddTreeNode(int
parentID,
TreeViewItem
treeViewItem)
result
(from
forumInfo
in
forumList
where
forumInfo.ParendID
==
parentID
select
forumInfo).ToList<
if
(result.Count
0)
foreach
(ForumInfo
foruminfo
result)
objTreeNode
TreeViewItem();
objTreeNode.Header
foruminfo.ForumName;
objTreeNode.DataContext
foruminfo;
//此样式将会添加的所有叶子结点上
//objTreeNode.ItemContainerStyle
//添加根节点
(treeViewItem
null)
TreeOfLife.Items.Add(objTreeNode);
else
treeViewItem.Items.Add(objTreeNode);
AddTreeNode(foruminfo.ForumID,
objTreeNode);
TreeOfLife_SelectedItemChanged(object
RoutedPropertyChangedEventArgs<
object>
item
e.NewValue
TreeViewItem;
ForumInfo
fi
item.DataContext
ForumInfo;
DetailsPanel.DataContext
fi;
下面演示一下效果,如下图所示:
当前TreeView控件还支持样式定义,比如可以给每个树形结点前添加CheckBox和一个小图标,这里我们使用下
面样式:
UserControl.Resources>
Style
Key="
TargetType="
TreeViewItem"
Setter
Property="
HeaderTemplate"
Setter.Value>
DataTemplate>
CheckBox
Image
Source="
image/default.png"
{Binding}"
Foreground="
Red"
FontStyle="
Italic"
/DataTemplate>
/Setter.Value>
/Setter>
IsExpanded"
Value="
True"
/Style>
/UserControl.Resources>
然后在cs文件中使用下面语句将该样式绑定到TreeView上:
TreeOfLife.ItemContainerStyle
下面就是应用了该样式的运行效果:
当前TreeView中定义样式模版还可以使用ItemTemplate,下面是一段样式代码:
TreeView.ItemTemplate>
HierarchicalDataTemplate
ItemsSource="
Subclasses}"
ItemContainerStyle="
{StaticResource
ExpandedItemStyle}"
StackPanel>
Rank}"
FontSize="
0
-5"
Classification}"
/controls:
HierarchicalDataTemplate>
运行该样式的效果如下图所示:
好了,今天的内容就先到这里了。
DEMO下载,请点击这里:
)
原文链接:
[url]