Отображение контекстных вкладок
В приложении Платформы ленты Windows контекстная вкладка — это скрытый элемент управления Tab , который отображается в строке вкладок при выборе или выделении объекта в рабочей области приложения, например изображения.
Введение
В отличие от основных вкладок, которые содержат различные общие команды, которые актуальны независимо от контекста рабочей области, контекстные вкладки обычно содержат одну или несколько команд, применимых только к выбранному или выделенному объекту.
При выборе или выделении объекта в рабочей области приложения для типа и контекста объекта могут потребоваться разрозненные команды, не имеющие смысла в организации или функциональности на одной контекстной вкладке. В таких случаях может потребоваться несколько контекстных вкладок, содержащихся в группе вкладок. Например, для выбора изображения, содержащегося в ячейке таблицы, может потребоваться две контекстные вкладки, которые предоставляют функции таблицы и изображения.
Примечание
Помимо нескольких контекстных вкладок, платформа ленты также поддерживает несколько элементов управления "Группа вкладок " на ленте.
При отображении контекстных вкладок платформа ленты применяет базовый набор поведений, в том числе:
- Контекстные вкладки размещаются в порядке их объявления и справа от основных вкладок в строке вкладок ленты.
- При изменении размера ленты вкладки масштабируются, а метки вкладок усекаются по мере того, как требуется место. Однако видимым контекстным вкладкам присваивается более высокий приоритет отображения, в котором они масштабируются и усекаются последними.
- Метка для группы вкладок отображается в строке заголовка приложения и охватывает все связанные контекстные вкладки.
- При одновременном отображении нескольких элементов управления "Группа вкладок " фону каждой группы вкладок в строке заголовка приложения назначается один из пяти уникальных цветов. Этот цвет также используется в качестве цвета выделения для контекстных вкладок в группе вкладок.
- Назначение цвета группы табуляции основано на порядке объявления элементов группы вкладок в разметке. Цвета определяются платформой и не могут быть заданы приложением.
- Цвета группы вкладок , определенные платформой, можно изменить косвенно с помощью ключей свойств Свойства платформы . Дополнительные сведения см. в разделе Настройка цветов ленты.
- Если в любой момент времени отображается более пяти элементов управления "Группа вкладок ", платформа циклически использует связанные цвета.
- Максимальное количество элементов управления TAB на ленте ограничено 100. Сюда входят контекстные вкладки, видимые или невидимые.
На следующем снимке экрана показана контекстная вкладка из Windows 7 Paint.
Реализация контекстных вкладок
В этом разделе рассматриваются сведения о реализации контекстных вкладок ленты и показано, как включить их в приложение ленты.
разметку
В следующих примерах показана базовая разметка для элемента TabGroup , содержащего две контекстные вкладки.
В этом разделе кода показаны объявления TabGroup и Tab Command.
<!-- Contextual Tabs -->
<Command Name='cmdContextualTab1'
LabelTitle='Contextual Tab 1'
Symbol='ID_CONTEXTUALTAB1'/>
<Command Name='cmdContextualTab2'
LabelTitle='Contextual Tab 2'
Symbol='ID_CONTEXTUALTAB2'/>
<Command Name='cmdContextualTabGroup'
LabelTitle='Contextual Tabs'
Symbol='ID_CONTEXTUALTAB_GROUP'/>
В этом разделе кода показаны объявления элементов управления, необходимые для отображения двух контекстных вкладок в группе TabGroup.
<Ribbon.ContextualTabs>
<TabGroup CommandName='cmdContextualTabGroup'>
<Tab CommandName='cmdContextualTab1'>
<!--InRibbonGallery Group-->
<Group CommandName='cmdInRibbonGalleryGroup'
SizeDefinition='OneInRibbonGallery'>
<InRibbonGallery CommandName='cmdTextSizeGallery3'
HasLargeItems='true'
ItemHeight='32'
ItemWidth='32'
MaxColumns='3' >
<InRibbonGallery.MenuLayout>
<FlowMenuLayout Columns='3'
Gripper ='Corner'/>
</InRibbonGallery.MenuLayout>
</InRibbonGallery>
</Group>
<!--Command Galleries Group-->
<Group CommandName='cmdCommandGalleriesGroup'
SizeDefinition='OneInRibbonGallery'>
<InRibbonGallery CommandName='cmdCommandGallery1'
Type='Commands'
MaxRows='3'
MaxColumns='3'>
<InRibbonGallery.MenuLayout>
<FlowMenuLayout Columns='3'
Gripper ='Corner'/>
</InRibbonGallery.MenuLayout>
</InRibbonGallery>
</Group>
</Tab>
<Tab CommandName='cmdContextualTab2'></Tab>
</TabGroup>
</Ribbon.ContextualTabs>
Код
UI_PKEY_ContextAvailable — это один ключ свойства, определенный платформой для указания видимости и состояния контекстных вкладок. При выборе объекта в рабочей области приложения этому свойству может быть присвоено одно из трех значений перечисления UI_CONTEXTAVAILABILITY , которые определяют, существует ли контекстная вкладка и, если она есть, отображается ли она как активная вкладка.
Приложение запрашивает обновление группы вкладок путем отмены и обновления свойства UI_PKEY_ContextAvailable при изменении контекста рабочей области.
В следующих разделах кода показано, как отобразить контекстную вкладку при выборе изображения в рабочей области приложения.
// Initialize the image tools contextual tab visibility setting.
UI_CONTEXTAVAILABILITY g_ImageTools = UI_CONTEXTAVAILABILITY_NOTAVAILABLE;
// Called when an image is selected in the application.
void SelectImage()
{
...
g_ImageTools = UI_CONTEXTAVAILABILITY_ACTIVE;
// Invalidate the UI_PKEY_ContextAvailable property of the image tools
// contextual tab Command and trigger the UpdatePropery callback function.
pUIFramework->InvalidateUICommand(
cmdImageTabSet,
UI_INVALIDATIONS_PROPERTY,
UI_PKEY_ContextAvailable);
...
}
// Update Tab Group properties.
HRESULT MyTabGroupCommandHandler::UpdateProperty(
UINT nCmdID,
REFPROPERTYKEY key,
const PROPVARIANT* ppropvarCurrentValue,
PROPVARIANT* ppropvarNewValue)
{
HRESULT hr = E_FAIL;
if (key == UI_PKEY_ContextAvailable)
{
hr = UIInitPropertyFromUInt32(key, g_ImageTools, ppropvarNewValue);
}
...
return hr;
}
Связанные темы