Использование ленты в качестве вкладки - PullRequest
6 голосов
/ 14 февраля 2009

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

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

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

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

Я прочитал «РУКОВОДСТВО ПО ПРОЕКТИРОВАНИЮ ИНТЕРФЕЙСА ПОЛЬЗОВАТЕЛЯ OFFICE FLUENT ™», в котором описано, что вы можете, и не могу сделать с лентой, но я не мог ничего найти по этому поводу.

Ответы [ 7 ]

3 голосов
/ 08 января 2010

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

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

3 голосов
/ 27 марта 2009

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

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

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

2 голосов
/ 16 февраля 2009

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

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

2 голосов
/ 14 февраля 2009

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

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

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

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

1 голос
/ 26 мая 2009

Используйте событие 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;
0 голосов
/ 23 августа 2010

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

0 голосов
/ 07 апреля 2009

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

InitPanels

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()

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

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

Josh

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