Руководство по графическому интерфейсу ленты

Я думаю о реализации ленточного графического интерфейса пользователя в одном из моих приложений и, конечно, хочу придерживаться Руководства MS, чтобы оно выглядело как нормальная лента и т. Д. Но я пытаюсь выяснить, как решить конкретную проблему при динамическом изменении лента

Я создаю редактор концептуальных игр, пожалуйста, не задавайте вопрос о том, почему лента, так как это чисто концептуальная идея, но в приложении будет много редакторов (2D, 3D, Code и т. Д.), И для каждого из них графический интерфейс должен адаптироваться и отображаться. соответствующие элементы управления, т. е. в 2D-редакторе, возможно, кисть, на 3D-инструментах много панорамирования и поворота.

Учитывая ленточные указания, имеет смысл в главном меню содержать наиболее распространенные инструменты, но только для типа редактируемого объекта (поворот не имеет смысла для 2D или кода!).

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

Я думал, что смогу динамически менять вкладки ленты в зависимости от того, какой тип редактора открывал пользователь (вкладки могут появляться / исчезать, содержимое на вкладке "Главная" и т. Д. Будет меняться), но тогда это нарушает правила MS:

"Элементы управления, отображаемые в группе, НЕ ДОЛЖНЫ изменяться в результате выбора. Если элемент управления не активен, то элемент управления ДОЛЖЕН быть серым, а не удаленным из группы"

"Вкладка, выбранная на ленте, НЕ ДОЛЖНА автоматически переключаться в результате выбора пользователя в документе 177 (за исключением случаев, отмеченных в разделе" Контекстные вкладки ")".

Я понимаю причины, лежащие в основе руководящих принципов, но я не совсем уверен, как заставить ленту чувствовать себя правильно в этой ситуации:

  • Изменение содержимого вкладок в зависимости от типа редактора (идет вразрез с указаниями)
  • Иметь вкладку для каждого типа редактора (но что, если я получу 15 типов редактора!)
  • Имейте очень общую ленту и перемещайте определенные операции редактора в боковую панель или что-то (не лучший дизайн GUI)
  • Используйте контекстные вкладки для каждого типа редактора (лучшее решение, но означает, что у вас всегда есть одна открытая контекстная вкладка!)

Любые другие идеи / решения будут с благодарностью, так как я должен использовать ленту и должен использовать ее для этого типа приложения!

2 ответа

Решение

Если вы предоставляете вкладку, относящуюся к конкретному редактору, я полагаю, вы могли бы расположить ее так, как лучше всего подходит для этого конкретного редактора. Это означает, что элементы управления будут иногда перемещаться, если вы используете ту же вкладку для других редакторов. Кажется нецелесообразным выделять серые элементы управления, которые не применимы к какому-либо конкретному редактору, если это вызовет много помех.

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

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

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

Если возможно, обратитесь за помощью к некоторым добровольцам или бета-тестерам и сделайте с ними несколько бумажных прототипов, чтобы увидеть, какой подход лучше им подходит.

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

PS Я исследую другую идею - использовать определенные щелчки вкладок для запуска различных режимов редактора. (Я разрабатываю программу по проектированию домов.) Например:

  1. Нажатие на вкладку "Домой" переключает в редактор планов, чтобы редактировать дом из "верхнего" вида;
  2. При нажатии на вкладку "Стена" открывается редактор стен, где вы можете редактировать форму и особенности стены.
  3. Нажатие на другие вкладки может не изменить текущий редактор. Они могут отображать другие немодальные команды, которые относятся ко всему документу (или к чему-то еще), а не к самому текущему режиму редактора.
Другие вопросы по тегам