powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Дерево по таблице из БД
5 сообщений из 5, страница 1 из 1
Дерево по таблице из БД
    #37128491
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте уважаемые,
Вопрос ни с какой конкретно задачей не связан, просто учусь

Есть в БД простейшая таблица с иерархией (поля Id, ParentId, Name)
Хочу показать данные в виде дерева
Сделал все как в этой замечательной статье: Hierarchical Data Trees with a Database
Все получилось как я хотел, все работает, но я подумал, а единственный ли это путь...

Нельзя ли все задать декларативно (т.е. в *.xaml, а не в *.cs) ?
Другими словами, можно ли как-то построить дерево по полученным из БД данным,
не присваивая в рантайме ItemsSource?

(Мои собственные попытки успехом не увенчались,
либо показываются все на первом уровне, либо только корень)

ЗЫ. Возможно, я просто не тот пример нашел.
Если так, поделитесь плз ссылкой

Заранее спасибо всем откликнувшимся
...
Рейтинг: 0 / 0
Дерево по таблице из БД
    #37128579
Руки-крюки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Паганель,

Думайте в этом направлении:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
<UserControl x:Class="Views.Node"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:this="clr-namespace:Views"
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300">
    <Grid>
        <ItemsControl ItemsSource="{Binding Path=Childrens}">
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <this:Node />
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>
    </Grid>
</UserControl>
...
Рейтинг: 0 / 0
Дерево по таблице из БД
    #37129869
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если я правильно понял, мне надо попробовать взять предка дерева (т.е. ItemsControl)
и "реализовать" функционал дерева самостоятельно
К сожалению, я пока еще не настолько хорошо знаю WPF, чтобы это сделать

Но все равно спасибо
К Вашему совету вернусь когда подучусь
...
Рейтинг: 0 / 0
Дерево по таблице из БД
    #37130579
Руки-крюки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Паганель,

Нет, ItemsControl это контрол который умеет хостить коллекции. Можете взять вместо него ListBox.

В моем примере юзер контрол, у которого есть ItemsControl, который хостит внутри этого юзер контрола несколько таких же самых юзер контролов (для каждого дочернего элемента дерева). Все это называется рекурсия. Добавьте к юзер контролу TextBlock и завижите его на свойство, например NodeName и получите дерево.

Учитывая выше сказанное, в вью модели узла дерева должно быть поле NodeName и коллекция дочерних элементов узла (коллекция вью моделей узла).

Что-бы поместить дерево на главную форму, сделайте что-то типа такого:
Код: plaintext
<Node DataContext="{Binding Path=RootNode}" />
...
Рейтинг: 0 / 0
Дерево по таблице из БД
    #37176617
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, получилось именно так, как Вы написали
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Дерево по таблице из БД
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]