silverlight treeview学习笔记[二]

带复选框的TreeView
说明:在TreeView中设置复选框是十分常见的,这有助于我们对于同组数据的一次性选取或取消。本文就将为你介绍怎样在Silverlight中实现带有Checkbox的TreeView。
最初的步骤
ObjectCollection
这是Silverlight Toolkit 提供的一个对象集合,用以提供静态的对象资源绑定。注意:使用时一定要添加System.Windows.Controls.Toolkit的引用。
HierarchicalDataTemplate
这是用于处理层次状数据而设置的数据模板,其主要用于具有HeaderedItemsControl的组件,比如说TreeViewItem。
INotifyPropertyChanged
向客户端发出某一属性值已更改的通知。主要用于实现数据的双向绑定
实现业务对象Feature:通过实现该业务对象,将能使其与TreeView进行交互。构建起这一对象的步骤主要有下述几步:
第一,声明可在XAML文件中显示的内容属性,添加属性标签[ContentProperty("SubComponents")]。
第二,使Feature对象继承接口INotifyPropertyChanged。
第三,设定Feature对象的属性。
第四,添加实现Checkbox效果的重要属性HasSubcomponents和ShouldInstall。
第五,实现接口INotifyPropertyChanged定义的函数。
具体部署
在MainPage.xaml文件中添加Feature对象的ObjectCollection资源,添加代表Feature对象Item的模板,以及添加有关数据对象的资源绑定。在MainPage.xaml.cs文件中添加对于TreeView组件的事件处理函数。具体代码请见下文。
代码段
Feature业务对象代码(Feature.cs)
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Windows.Markup;
namespace SilverlightClient
{
[ContentProperty("Subcomponents")] //声明可在XAML文件中显示的内容属性
public class Feature : INotifyPropertyChanged //继承接口INotifyPropertyChanged用于双向数据绑定
{
//Feature对象的属性
public string FeatureName { get; set; }
public string Description { get; set; }
//声明全局变量
public Collection<Feature> Subcomponents { get; private set; }
private bool? _shouldInstall;
//是否有子组件
public bool HasSubcomponents
{
get
{
return Subcomponents.Count > 0;
}
}
//是否允许Feature进行安置
public bool? ShouldInstall
{
get
{
return _shouldInstall;
}
set
{
if (value != _shouldInstall)
{
_shouldInstall = value;
OnPropertyChanged("ShouldInstall");
}
}
}
//构造函数
public Feature()
{
Subcomponents = new Collection<Feature>();
ShouldInstall = true;
}
//事件委托
public event PropertyChangedEventHandler PropertyChanged;
//实现接口INotifyPropertyChanged定义函数
private void _disibledevent=>
if (null != handler)
{
handler.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
}
}
Tags: 

延伸阅读

最新评论

发表评论