Иерархическая привязка данных к плоской сетке данных WPF - PullRequest
4 голосов
/ 18 мая 2011

Как можно «двусторонне связать» иерархическую структуру данных с плоской сеткой данных wpf?

Модель интерфейса приложения: iTunes - я ищу, чтобы сетка данных выглядела плоской (а не сетка мастер / деталь). Пользователь видит строки, содержащие Исполнителя, Альбом и Песню; но данные хранятся иерархически, где исполнитель содержит список альбомов, который содержит список песен.

Когда пользователь переименовывает альбом, иерархия автоматически находит или создает новый альбом (на основе имени альбома) для данного исполнителя и перемещает композицию в альбом.

Добавление слоя перевода между плоскими данными и иерархическими данными кажется плохим решением.

Обновление 1
Прочитав ответы, кажется, что достичь того, что я описал выше, невозможно без большой работы за кулисами. Кажется, мне следует пересмотреть представление моих данных таким образом.

Ответы [ 2 ]

0 голосов
/ 18 мая 2011

Мне также не нравится слой перевода, но это, кажется, самое простое решение.

Помимо этого, вы можете написать свой собственный шаблон.Так, например, если у вас есть данные, структурированные как: Album> Song, и вы хотите, чтобы они отображались, как на этом рисунке: http://files.jerahmeelcosinas.net/stackoverflow/itunes.jpg

это будет примерно так:*

Вы можете переключать шаблон ItemsControl во время выполнения для переключения между представлениями (для простого списка песен или списка, отсортированного по альбому).

0 голосов
/ 18 мая 2011

Выравнивание структуры может быть сделано с помощью проекции LINQ. См. Проекцию «один ко многим» в этой статье .

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

Я не вижу способа сделать это проще, и всегда потребуется слой перевода, будь то запрос LINQ, специальная привязка или конвертер, если вы не найдете сетку, которая сделает это за вас.

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