我在MVVM中编写了一个带有TreeView和Ria Services的Silverlight 4应用程序,以分层显示客户。 我不想从数据库加载所有客户,我想通过扩展顶点来重新加载它们。有机会使用MVVM模式吗?
在数据库的客户模型中,存在“Parent_id”关系而没有“child_id”!
非常感谢!
答案 0 :(得分:1)
是的,有可能。但请注意,这是一项复杂的任务。
首先,您应该拥有一个具有以下属性的viewmodel:
一开始你有一个这些模型的列表,但集合ChildTtems应该由空白项组成。如果childitems集合为空 - 您将无法展开父项。
下一步 - 绑定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
}
此外,您必须为每个项目收到许多子项,并生成空白项目集合。