Да, это возможно. Но имейте в виду, что это сложная задача.
Сначала у вас должна быть модель представления со следующими свойствами:
- Id (используется для получения дочерних элементов parentId)
- Заголовок (отображается в виде дерева)
- ChildItems (реальная коллекция или пустые элементы)
- IsExpanded
- IsBlank (если этот элемент является дочерним и еще не загружен)
В начале у вас есть список этих моделей, но коллекция ChildTtems должна состоять из пустых элементов. Если коллекция childitems пуста - вы не сможете развернуть родительский элемент.
Следующий шаг - связать свойство IsExpanded. Вы можете найти решение по этой ссылке .
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
}
Кроме того, вы должны получить количество дочерних элементов для каждого элемента и создать коллекцию пустых элементов.