0
我正在用MVVM中的TreeView和Ria Services编写Silverlight 4应用程序以分层显示客户。 我不想从数据库加载所有客户,我想通过展开顶点来重新加载它们。有没有机会使用MVVM模式来做到这一点?Silverlight 4 MVVM TreeView控件
在数据库的客户模型中,存在“Parent_id”关系并且没有“child_id”!
非常感谢!
我正在用MVVM中的TreeView和Ria Services编写Silverlight 4应用程序以分层显示客户。 我不想从数据库加载所有客户,我想通过展开顶点来重新加载它们。有没有机会使用MVVM模式来做到这一点?Silverlight 4 MVVM TreeView控件
在数据库的客户模型中,存在“Parent_id”关系并且没有“child_id”!
非常感谢!
是的,这是可能的。但是要知道,这是一个相当复杂的任务。
首先,你应该有以下属性的视图模型:
开始时您有这些模型的列表,但集合ChildTtems应该由空白项组成。如果子项收集为空,则无法扩展父项。
下一步 - 绑定IsExpanded属性。您可以在this link上找到解决方案。
private bool isExpanded;
public bool IsExpanded
{
get { return isExpanded; }
set
{
isExpanded = value;
OnPropertyChanged("IsExpanded");
if(isExpanded)
this.UpdateChildItems();
}
}
public ObservableCollection<HierarchyViewModel> ChildItems { get; set; }
void UpdateChildItems()
{
//Check wheter the child items are blank (this.ChildItems.Any(ci=>ci.IsBlank))
//and if answer is yes, receive real items from service,
//transform each of them to a viewmodel class and set IsBlank=false
}
此外,你必须接受一些childitems每个项目和产生的空白项目的集合。
非常感谢!但要小心,在Silverlight中,不可能在XAML中设置“IsExpanded”绑定。您必须继承TreeView和TreeViewItem类的硬编码绑定。 – Tom 2010-12-15 07:57:48