Всплывающее окно контекста
Всплывающее окно контекста — это основной элемент управления в представлении ContextPopup платформы ленты Windows. Это многофункциональная контекстная система меню, которая предоставляется платформой только как расширение реализации ленты. Платформа не предоставляет контекстное всплывающее окно как независимый элемент управления.
- компоненты всплывающего окна контекста
- Реализация всплывающего окна контекста
- свойств всплывающего окна контекста
- связанные разделы
Компоненты всплывающего окна контекста
Всплывающее окно контекста — это логический контейнер для контекстного меню и Mini-Toolbar вложенных элементов управления, предоставляемых с помощью ContextMenu и элементов разметки MiniToolbar соответственно:
- ContextMenu предоставляет меню команд и коллекций.
- MiniToolbar предоставляет плавающую панель инструментов различных команд, коллекций и сложных элементов управления, таких как элемент управления шрифтом и поле со списком.
Каждый вложенный элемент управления может отображаться не более одного раза в всплывающем оккупе контекста.
На следующем снимке экрана показан всплывающее окно контекста и его составляющие вложенные элементы управления.
Всплывающее окно контекста является чисто концептуальной и не предоставляет никаких функций пользовательского интерфейса, таких как размещение или изменение размера.
Заметка
Всплывающее окно контекста обычно отображается путем щелчка правой кнопкой мыши (или с помощью сочетания клавиш SHIFT+F10) в интересующем объекте. Однако действия, необходимые для отображения всплывающего окна контекста, определяются приложением.
Реализация всплывающего окна контекста
Аналогично другим элементам управления платформы ленты Windows всплывающее окно контекста реализуется с помощью компонента разметки, указывающего сведения о презентации и компонент кода, который управляет его функциональностью.
В следующей таблице перечислены элементы управления, поддерживаемые каждым вложенным элементом управления Контекста.
Контроль | Mini-Toolbar | Контекстное меню |
---|---|---|
кнопки | x | x |
флажок | x | x |
поле со списком | x | |
кнопкиDrop-Down | x | x |
средства выбора цветаDrop-Down | x | x |
коллекцииDrop-Down | x | x |
элемента управления шрифтом | x | |
кнопки справки | ||
коллекцииIn-Ribbon | ||
Спиннер | ||
кнопка разделения | x | x |
коллекция разделим кнопок | x | x |
переключателя кнопки | x | x |
Разметка
Каждый вложенный элемент управления контекста должен быть объявлен отдельно в разметке.
Mini-Toolbar
При добавлении элементов управления в всплывающее окно контекста мини-панель инструментов следует учитывать следующие две рекомендации.
- Элементы управления должны быть высоко распознаваемыми и предоставлять очевидные функциональные возможности. Знакомство — это ключ, так как метки и подсказки не предоставляются для элементов управления Mini-Toolbar.
- Каждая команда, предоставленная элементом управления, должна быть представлена в другом месте пользовательского интерфейса ленты. Mini-Toolbar не поддерживает навигацию по клавиатуре.
В следующем примере показана базовая разметка для элемента MiniToolbar, содержащего три элемента управления Button.
Заметка
Для каждой строки элементов управления на мини-панели инструментов указывается один элемент MenuGroup.
<MiniToolbar Name="MiniToolbar">
<MenuGroup>
<Button CommandName="cmdButton1" />
<Button CommandName="cmdButton2" />
<Button CommandName="cmdButton3" />
</MenuGroup>
</MiniToolbar>
Контекстное меню
В следующем примере показана базовая разметка для элемента ContextMenu, содержащего три элемента управления button Button.
Заметка
Каждый набор элементов управления в элементе MenuGroup отделяется горизонтальной строкой в контекстном меню.
<ContextMenu Name="ContextMenu">
<MenuGroup>
<Button CommandName="cmdCut" />
<Button CommandName="cmdCopy" />
<Button CommandName="cmdPaste" />
</MenuGroup>
</ContextMenu>
Хотя всплывающее окно контекста может содержать не более одного из элементов управления, несколько ContextMenu и объявления элементов MiniToolbar в разметке ленты допустимы. Это позволяет приложению поддерживать различные сочетания контекстного меню и элементов управления Mini-Toolbar на основе критериев, определенных приложением, например контекста рабочей области.
Дополнительные сведения см. в элементе ContextMap.
В следующем примере показана базовая разметка элементаContextPopupContextPopup.
<ContextPopup>
<ContextPopup.MiniToolbars>
<MiniToolbar Name="MiniToolbar">
<MenuGroup>
<Button CommandName="cmdButton1" />
<Button CommandName="cmdButton2" />
<Button CommandName="cmdButton3" />
</MenuGroup>
</MiniToolbar>
</ContextPopup.MiniToolbars>
<ContextPopup.ContextMenus>
<ContextMenu Name="ContextMenu">
<MenuGroup>
<Button CommandName="cmdCut" />
<Button CommandName="cmdCopy" />
<Button CommandName="cmdPaste" />
</MenuGroup>
</ContextMenu>
</ContextPopup.ContextMenus>
<ContextPopup.ContextMaps>
<ContextMap CommandName="cmdContextMap" ContextMenu="ContextMenu" MiniToolbar="MiniToolbar"/>
</ContextPopup.ContextMaps>
</ContextPopup>
Код
Чтобы вызвать всплывающее окно контекста, метод IUIContextualUI::ShowAtLocation вызывается, когда окно верхнего уровня приложения ленты получает уведомление WM_CONTEXTMENU.
В этом примере показано, как обрабатывать уведомление WM_CONTEXTMENU в методе WndProc() приложения ленты.
case WM_CONTEXTMENU:
POINT pt;
POINTSTOPOINT(pt, lParam);
// ShowContextualUI method defined by the application.
ShowContextualUI (pt, hWnd);
break;
В следующем примере показано, как приложение ленты может отображать всплывающее окно контекста в определенном расположении экрана с помощью метода IUIContextualUI::ShowAtLocation.
GetCurrentContext() имеет значение cmdContextMap
, как определено в предыдущем примере разметки.
g_pApplication — это ссылка на интерфейс IUIFramework.
HRESULT ShowContextualUI(POINT& ptLocation, HWND hWnd)
{
GetDisplayLocation(ptLocation, hWnd);
HRESULT hr = E_FAIL;
IUIContextualUI* pContextualUI = NULL;
if (SUCCEEDED(g_pFramework->GetView(
g_pApplication->GetCurrentContext(),
IID_PPV_ARGS(&pContextualUI))))
{
hr = pContextualUI->ShowAtLocation(ptLocation.x, ptLocation.y);
pContextualUI->Release();
}
return hr;
}
Ссылка на IUIContextualUI может быть выпущена до закрытия всплывающего окна контекста, как показано в предыдущем примере. Однако ссылка должна быть выпущена в какой-то момент, чтобы избежать утечки памяти.
Осторожность
Mini-Toolbar имеет встроенный эффект затухания, основанный на близости указателя мыши. По этой причине рекомендуется, чтобы Mini-Toolbar отображались как можно ближе к указателю мыши. В противном случае из-за конфликтующих механизмов отображения Mini-Toolbar может не отображаться должным образом.
Свойства всплывающего окна контекста
Нет ключей свойств, связанных с элементом управления Context Popup.
Связанные разделы