Silverlight 4 MVVM TreeView Control - PullRequest
       3

Silverlight 4 MVVM TreeView Control

0 голосов
/ 10 декабря 2010

Я пишу приложение Silverlight 4 с TreeView и Ria Services в MVVM для иерархического отображения клиентов. Я не хочу загружать всех клиентов из базы данных, я хочу перезагрузить их, вместо этого расширяя вершину. Есть ли шанс сделать это с помощью MVVM Pattern?

В модели клиентов базы данных есть отношение "Parent_id", а не "child_id"!

Большое спасибо!

1 Ответ

1 голос
/ 11 декабря 2010

Да, это возможно. Но имейте в виду, что это сложная задача.

Сначала у вас должна быть модель представления со следующими свойствами:

  • 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
    }

Кроме того, вы должны получить количество дочерних элементов для каждого элемента и создать коллекцию пустых элементов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...