Отображать списки и папки из sharepoint в древовидной структуре WPF - PullRequest
1 голос
/ 26 января 2011

Я хочу отобразить все списки с их папками в виде дерева WPF.

Списки отображаются хорошо, но не папки (у меня только одноуровневое представление дерева).

Вот как я получаю списки и папки:

   ListCollection lists = site.Lists;
                IEnumerable<SP.List> listsCollection =
                    context.LoadQuery(
                                lists.Include(l => l.Title, l => l.Id, l => l.RootFolder.Folders.Include(
                                    Folder => Folder.Name))
                                     .Where(list => !list.Hidden && list.BaseType == BaseType.DocumentLibrary));

           context.executeQuery();

я добавляю lists к моему источнику древовидных элементов.

и это мое древовидное представление xaml:

<TreeView.ItemTemplate>
    <HierarchicalDataTemplate ItemsSource="{Binding Path=Lists}">
               <TextBlock Text="{Binding Path=Title}" />
                <HierarchicalDataTemplate.ItemTemplate>
                 <DataTemplate>
                    <TextBlock Text="{Binding Path=Folder}"/>
                                        </DataTemplate>
                                        </HierarchicalDataTemplate.ItemTemplate>
                                    </HierarchicalDataTemplate>
                                </TreeView.ItemTemplate>

папки не отображаются, помогите.

Ответы [ 2 ]

1 голос
/ 26 января 2011

Сделайте внутренний DataTemplate также HierarchicalDataTemplate и установите для HierarchicalDataTemplate.ItemsSource свойство, содержащее папки.

Обновление:

<TreeView.ItemTemplate>
    <HierarchicalDataTemplate ItemsSource="{Binding Path=Lists}">
        <HierarchicalDataTemplate.ItemTemplate>
            <HierarchicalDataTemplate ItemsSource="{Binding Folders}">
                <TextBlock Text="{Binding Path=Folder}"/>
            </HierarchicalDataTemplate>
        </HierarchicalDataTemplate.ItemTemplate>
        <TextBlock Text="{Binding Path=Title}" />                                            
    </HierarchicalDataTemplate>
</TreeView.ItemTemplate>

Посмотрите на внутреннюю таблицу HierarchicalDataTemplate, есть также ItemSource, который отвечает за получение подэлементов.

0 голосов
/ 26 января 2011

Я настоятельно рекомендую вам подход MVVM для управления древовидной структурой.Подход описан в этой очень хорошей статье: Упрощение WPF TreeView с помощью шаблона ViewModel

TreeView в WPF быстро причиняет боль ... подход mvvm смещает управление в классесвой собственный, и на самом деле им легче управлять.

...