Kontext-Popup
Ein Kontext-Popup ist das Prinzipalsteuerelement in der ContextPopup-Ansicht des Windows-Menübandframeworks. Es handelt sich um ein umfassendes Kontextmenüsystem, das vom Framework nur als Erweiterung einer Menübandimplementierung verfügbar gemacht wird. Das Framework macht das Kontext-Popup nicht als unabhängiges Steuerelement verfügbar.
- Komponenten des Kontext-Popups
- Implementieren des Kontext-Popups
- Kontext-Popupeigenschaften
- Zugehörige Themen
Komponenten des Kontext-Popups
Das Kontext-Popup ist ein logischer Container für das Kontextmenü und Mini-Toolbar Untersteuerelemente, die über die Markupelemente ContextMenu bzw . MiniToolbar verfügbar gemacht werden:
- Das ContextMenu macht ein Menü mit Befehlen und Katalogen verfügbar.
- Die MiniToolbar macht eine schwebende Symbolleiste mit verschiedenen Befehlen, Katalogen und komplexen Steuerelementen wie dem Schriftartsteuerelement und dem Kombinationsfeld verfügbar.
Jedes Untersteuerelement kann höchstens einmal in einem Kontext-Popup angezeigt werden.
Der folgende Screenshot veranschaulicht das Kontext-Popup und die darin enthaltenen Untersteuerelemente.
Das Kontext-Popup ist rein konzeptuell und macht keine Benutzeroberflächenfunktionen selbst verfügbar, z. B. Positionierung oder Größenanpassung.
Hinweis
Das Kontext-Popup wird normalerweise angezeigt, indem sie mit der rechten Maustaste (oder über die Tastenkombination UMSCHALT+F10) auf ein objekt von Interesse klicken. Die zum Anzeigen des Kontext-Popups erforderlichen Schritte werden jedoch von der Anwendung definiert.
Implementieren des Kontext-Popups
Ähnlich wie andere Windows-Menübandframeworksteuerelemente wird das Kontext-Popup über eine Markupkomponente implementiert, die die Präsentationsdetails angibt, und eine Codekomponente, die die Funktionalität steuert.
In der folgenden Tabelle sind die Steuerelemente aufgeführt, die von den einzelnen Kontext-Popup-Untersteuerelementen unterstützt werden.
Control | Mini-Toolbar | Kontextmenü |
---|---|---|
Schaltfläche | x | x |
Kontrollkästchen | x | x |
Kombinationsfeld | x | |
Dropdownschaltfläche | x | x |
Dropdown-Farbauswahl | x | x |
Dropdownkatalog | x | x |
Schriftartsteuerelement | x | |
Schaltfläche „Hilfe“ | ||
Katalog im Menüband | ||
Spinner | ||
Schaltfläche "Teilen" | x | x |
Katalog für geteilte Schaltflächen | x | x |
Schaltfläche umschalten | x | x |
Markup
Jedes Kontext-Popup-Untersteuerelement muss einzeln im Markup deklariert werden.
Mini-Toolbar
Beim Hinzufügen von Steuerelementen zu einer Kontext-Popup-Minisymbolleiste sollten die folgenden beiden Empfehlungen berücksichtigt werden:
- Steuerelemente sollten gut erkennbar sein und offensichtliche Funktionen bieten. Vertrautheit ist wichtig, da Bezeichnungen und QuickInfos nicht für Mini-Toolbar-Steuerelemente verfügbar gemacht werden.
- Jeder Befehl, der von einem Steuerelement verfügbar gemacht wird, sollte an anderer Stelle auf der Menübandbenutzeroberfläche angezeigt werden. Die Mini-Toolbar unterstützt keine Tastaturnavigation.
Im folgenden Beispiel wird das grundlegende Markup für ein MiniToolbar-Element veranschaulicht, das drei Button-Steuerelemente enthält.
Hinweis
Für jede Zeile von Steuerelementen in der Minisymbolleiste wird ein MenuGroup-Element angegeben.
<MiniToolbar Name="MiniToolbar">
<MenuGroup>
<Button CommandName="cmdButton1" />
<Button CommandName="cmdButton2" />
<Button CommandName="cmdButton3" />
</MenuGroup>
</MiniToolbar>
Kontextmenü
Im folgenden Beispiel wird das grundlegende Markup für ein ContextMenu-Element veranschaulicht, das drei Button-Steuerelemente enthält.
Hinweis
Jeder Satz von Steuerelementen im MenuGroup-Element ist durch eine horizontale Leiste im Kontextmenü getrennt.
<ContextMenu Name="ContextMenu">
<MenuGroup>
<Button CommandName="cmdCut" />
<Button CommandName="cmdCopy" />
<Button CommandName="cmdPaste" />
</MenuGroup>
</ContextMenu>
Obwohl ein Kontext-Popup höchstens eines jedes Untersteuerelements enthalten kann, sind mehrere ContextMenu - und MiniToolbar-Elementdeklarationen im Menübandmarkup gültig. Dadurch kann eine Anwendung verschiedene Kombinationen von Kontextmenü und Mini-Toolbar-Steuerelementen unterstützen, die auf von der Anwendung definierten Kriterien basieren, z. B. dem Arbeitsbereichskontext.
Weitere Informationen finden Sie im ContextMap-Element .
Im folgenden Beispiel wird das grundlegende Markup für das ContextPopup-Element veranschaulicht.
<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>
Code
Um ein Kontext-Popup aufzurufen, wird die IUIContextualUI::ShowAtLocation-Methode aufgerufen, wenn das Fenster der obersten Ebene der Menübandanwendung eine WM_CONTEXTMENU Benachrichtigung empfängt.
In diesem Beispiel wird veranschaulicht, wie die WM_CONTEXTMENU Benachrichtigung in der WndProc()-Methode der Ribbon-Anwendung behandelt wird.
case WM_CONTEXTMENU:
POINT pt;
POINTSTOPOINT(pt, lParam);
// ShowContextualUI method defined by the application.
ShowContextualUI (pt, hWnd);
break;
Im folgenden Beispiel wird veranschaulicht, wie eine Menübandanwendung das Kontext-Popup an einer bestimmten Bildschirmposition mithilfe der IUIContextualUI::ShowAtLocation-Methode anzeigen kann.
GetCurrentContext() hat den Wert von cmdContextMap
, wie im vorherigen Markupbeispiel definiert.
g_pApplication ist ein Verweis auf die IUIFramework-Schnittstelle .
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;
}
Der Verweis auf IUIContextualUI kann freigegeben werden, bevor das Kontext-Popup geschlossen wird, wie im vorherigen Beispiel gezeigt. Der Verweis muss jedoch zu einem bestimmten Zeitpunkt freigegeben werden, um Speicherverluste zu vermeiden.
Achtung
Die Mini-Toolbar verfügt über einen integrierten Einblendeffekt, der auf der Nähe des Mauszeigers basiert. Aus diesem Grund wird empfohlen, die Mini-Toolbar so nah wie möglich am Mauszeiger anzuzeigen. Andernfalls wird der Mini-Toolbar aufgrund der in Konflikt stehenden Anzeigemechanismen möglicherweise nicht wie erwartet gerendert.
Kontext-Popupeigenschaften
Dem Context-Popup-Steuerelement sind keine Eigenschaftenschlüssel zugeordnet.
Zugehörige Themen