Использование ленты в качестве элемента управления вкладками

StackOverflow https://stackoverflow.com/questions/549518

Вопрос

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

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

Например, на ленте есть две вкладки:люди и задачи.Если на текущей панели ленты указано «Люди», под лентой отображается сетка с данными о людях.Лента содержит команды для управления данными о людях.Когда пользователь переключается на вкладку «Задачи» на ленте, приложение должно отображать форму с задачами под лентой.

Вопрос в том, можно ли использовать ленту в этом сценарии?

Я читаю «Руководство по проектированию пользовательского интерфейса Office Fluent ™», которые описывают, что вы можете и не можете сделать с лентой, но я ничего не смог найти в этом.

Это было полезно?

Решение 2

я нашел Практические занятия в Саутридже по Codeplex.В лабораторной работе 3 есть пример управления лентой, который используется так же, как я и собирался сделать.

Лаборатории Саутриджа проводятся Microsoft, поэтому я полагаю, что могу сделать то же самое, что и в этом примере.

Другие советы

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

Хотя Скотт считает, что это может несколько противоречить тому, для чего Microsoft намеревалась использовать ленту, он считает, что лента также подходит для такого рода использования.Поскольку, если вы хотите иметь обычную вкладку, как предлагает Майкл, вам понадобятся кнопки для переключения между окнами или задачами.Используя ленту, вы напрямую связываете функции/кнопки управления с вкладкой задачи, что упрощает изучение того, какие кнопки связаны с какой задачей.Кнопки, используемые для всего приложения, можно интегрировать в кнопку Office (большой логотип Office в верхнем левом углу), что на самом деле и делает Microsoft.

В настоящее время мы также реализуем панель инструментов, похожую на ленту, так что, вероятно, я не совсем объективен.Однако я склонен думать, что лента работает довольно просто и позволяет пользователям легко находить кнопки.Одно примечание:этого также можно достичь, используя большие логотипы и раскрывающиеся галереи. Большинство доступных ленточных пакетов легко реализуют эти вещи, поэтому нет необходимости писать код самостоятельно (если только вы не можете это сделать очень легко)!

То, что вы предлагаете, противоречит рекомендациям Microsoft.Возможно, вы нарушаете их правила.

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

(Было сказано, что...Я знаю некоторые приложения, которые используют ленту так, как вы описываете...и, кажется, это очень хорошо работает!)

Я столкнулся с похожей головной болью при реализации нашего приложения с использованием ленты.В следующей версии мы вернемся к контекстно-зависимой панели инструментов :)

Если у вас мало команд на вкладке (менее 20), то, возможно, вам следует использовать обычный элемент управления вкладками с кнопками для команд вверху или в другом месте листа вкладок.Это также даст вам возможность иметь кнопки, применимые ко всему приложению (например, «Выход», «Настройки») вне элемента управления вкладками, что поможет сделать их область действия понятной пользователю (чего вы не можете сделать с лентой).

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

Используйте событие OnTabChange, чтобы вывести соответствующую панель на передний вид:

procedure TForm1.Ribbon1TabChange(Sender: TObject; const NewIndex,
  OldIndex: Integer; var AllowChange: Boolean);
begin
  case NewIndex of
    0: Panel0.BringToFront;

    1: Panel1.BringToFront;

    2: Panel2.BringToFront;

    3: Panel3.BringToFront;

  end;
end;

К вашему сведению, я немного поигрался с пакетом xtrabar от devexpress и реализовал это поведение управления вкладками, используя свойство tag.Я создаю элемент управления панелью для каждой страницы ленты, а затем делаю что-то вроде следующего:

ИнитПанели

RibPage1.tag = Panel1
RibPage2.tag = Panel2

' Set Display Properties
'Panel1 displays initially

With Panel1
   .Dock = Fill
   .Show()
End With

With Panel2
   .Dock = Fill
   .Hide()
End With

Ribbon.SelectedPage = RibPage1

Изменение ленты при выборе страницы

P as Panel = ctype(sender.tag, Panel)
p.hide()

Лента на выбранной странице изменена

P as Panel = ctype(sender.tag, Panel)
p.Show()

Я новичок в программировании, поэтому, возможно, есть какой-то лучший способ сделать это, но мне кажется, это работает.Вероятно, это также зависит от поставщика ленты.

Надеюсь это поможет.

Джош

Новая версия од ленты wpf не имеет тех же ограничений, что и предыдущие версии.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top