Настройка TreeView в Silverlight с помощью HierarchicalDataTemplate и связывание с ItemSource - PullRequest
0 голосов
/ 11 марта 2011

Я пытаюсь построить TreeView и настроить его следующим образом:

Silverlight против WPF - древовидная структура с HierarchialDataTemplate

В качестве комментария к первому фактическому ответу, предоставленному на постере, говорится, как они решили это, но они не предоставили код, и я понимаю, что они сказали, но я действительно новичок в этом и не могу понять это правильно. У меня такая же структура настроек с сущностями и группами. Мне было интересно, если кто-нибудь может объяснить, как в конечном итоге выглядит xaml. Я предполагаю, говоря, что они создали новый класс узлов, это просто означает, что они создали класс, который по существу содержит список групп. Что-то вроде

class groupHolder
{
   public List<Group> myGroups {get;set;}
   public groupHolder() { myGroups = new List<Group>(); } 
}

Я просто пытаюсь пройти три уровня глубиной:

Группа 1
- - - - AnotherGroup1
- - - - - - - - entity1
- - - - - - - - entity2
- - - - AnotherGroup2
- - - - - - - - entity1
Group2
- - - - Entity1
- - - - Entity2
- - - - AnotherGroup1
- - - - - - - - entity1
- - - - - - - - entity2
- - - - AnotherGroup2
- - - - - - - - entity1
и так далее ...

Как я уже сказал, я новичок в этом. Я также пытался использовать этот учебник:

http://blogs.microsoft.co.il/blogs/davids/archive/2009/06/04/hierarchicaldatatemplate-and-treeview.aspx

но когда я пытаюсь установить другой HierarchicalDataTemplate, он говорит, что ItemTemplate установлен более одного раза. Я потерялся.


edit: нашел эту ссылку в сети, тоже помогает .... думаю ...

http://www.codeproject.com/Articles/36451/Organizing-Heterogeneous-Data-on-a-WPF-TreeView.aspx

1 Ответ

4 голосов
/ 11 марта 2011

Мне удалось воссоздать эту структуру:

TreeView:

 <sdk:TreeView Grid.Row="2"                                            
                      ItemTemplate="{StaticResource GroupTemplate}"
                      ItemsSource="{Binding Path=Groups}">            
        </sdk:TreeView>

Шаблоны:

 <UserControl.Resources>       
        <common:HierarchicalDataTemplate x:Key="EntryTemplate">
            <TextBlock Text="{Binding Path=Name}" />
        </common:HierarchicalDataTemplate>
        <common:HierarchicalDataTemplate x:Key="SubGroupTemplate"
                                         ItemsSource="{Binding Path=Entries}"
                                         ItemTemplate="{StaticResource EntryTemplate}">
            <TextBlock Text="{Binding Path=Name}" />
        </common:HierarchicalDataTemplate>
        <common:HierarchicalDataTemplate x:Key="GroupTemplate"
                                         ItemsSource="{Binding Path=SubGroups}"
                                         ItemTemplate="{StaticResource SubGroupTemplate}">
            <TextBlock Text="{Binding Path=Name}" />
        </common:HierarchicalDataTemplate>
    </UserControl.Resources>

В ViewModel у меня есть:

public List<Group> Groups { get; set; }

Rest:

 public class Group
    {
        public int Key { get; set; }
        public string Name { get; set; }
        public List<Group> SubGroups { get; set; }
        public List<Entry> Entries { get; set; }
    }

  public class Entry
    {
        public int Key { get; set; }
        public string Name { get; set; }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...