Элегантный шаблон пользовательского интерфейса для создания LOB-приложений поверх иерархических данных? - PullRequest
2 голосов
/ 09 июля 2011

Это общий вопрос о дизайне пользовательского интерфейса и шаблонах программирования, хотя мой вопрос связан с приложением WPF, над которым я работаю.

Что такое чистый, элегантный шаблон для представления управляемого пользователем интерфейса данных, когда модель данных является иерархической, а иерархии имеют глубину> 2 уровня? Под чистым я подразумеваю подход, который требует очень мало повторяющегося кода (по сравнению с кодированием формы для каждого типа модели данных) и требует небольшого утомительного труда. Например, можно полагаться на рефлексию. Я думаю, именно поэтому у нас есть вложенные сетки данных. Вы можете вложить дочерние объекты в шаблон сведений о строке. Почти все большие бизнес-приложения используют иерархические данные, поэтому кто-то уже решил эту проблему.

Но проблема в том, что, если в основной сетке много разных дочерних сеток деталей? Пользовательский интерфейс может выглядеть загроможденным детальными сетками, вложенными в основную сетку и расположенными друг над другом.

Некоторые идеи, которые у меня были, могут заключаться в том, чтобы попробовать элемент управления вкладками, вложенный в основную сетку. Другой способ - просто открыть новую сетку данных в новом представлении и не вкладывать сетки, но затем создание нового представления для каждой сетки снова кажется утомительной работой, которую я стараюсь избегать.

Есть ли более чистая альтернатива построению приложения LOB " над данными " в иерархической модели данных, помимо кодирования каждого представления (и модели представления) по одному?

1 Ответ

1 голос
/ 09 июля 2011

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

В некоторой степени ответ на этот вопрос связан с тем, сколько информацииоб остальном дереве, которое вам нужно, когда вы взаимодействуете на заданном уровне.Вам действительно нужно знать о корне дерева и обо всех дочерних элементах корня, когда вы работаете с листьями на два уровня ниже?Конечно, есть случаи использования, когда вы это делаете, и в этих случаях имеет смысл выбрать репрезентативную структуру, которая позволит вам видеть всех дочерних элементов (как в подходе с вложенными сетками).В других случаях вам не нужно много знать, если есть какая-либо информация о более высоких уровнях в дереве;в таких ситуациях имеет смысл выделить представление более низких данных в отдельную область представления (стр.).

Существует множество способов решения этой проблемы.Вы видели прези ?Это очень впечатляет, и часть того, что делает его впечатляющим, заключается в том, что есть ощущение «места» для данных;он использует собственный пространственный смысл человека, чтобы помочь разобраться в сложных данных и иерархиях;масштабирование действительно фиксирует в этом смысле пространственную ориентацию (иногда дезориентацию).

С точки зрения вашего фактического вопроса;подумайте о ОТДЫХЕ, и особенно об ожидании HATEOAS.По сути, рассмотрите возможность моделирования ваших данных независимо от представления, а затем позвольте представлению быть относительно тонким слоем, в отличие от плотной модели представления.Могут быть некоторые вещи, которые требуют настройки, но самое главное, если общая модель представления нуждается в настройке, вы можете вернуться и изменить ее относительно легко.Кроме того, модель данных имеет тенденцию подразумевать определенную структуру, которая имеет смысл с данным набором данных;по сути, это вопрос определения структуры ваших данных и поиска модели дисплея, которая наиболее подходит для этого.Не передавая нагрузку на лодку строгой модели представления, вы получаете возможность изменять при необходимости.Гибкий дизайн пользовательского интерфейса, примерно.

Этот материал очень субъективен и действительно зависит от вашей организации и ваших потребностей;нет единого хорошего ответа для каждого решения.Удачи;ты хотя бы задаешь правильные вопросы!

...