Freigeben über


PopupMenu.ShowForSelectionAsync Methode

Definition

Überlädt

ShowForSelectionAsync(Rect)

Zeigt das Kontextmenü oberhalb der angegebenen Auswahl an.

ShowForSelectionAsync(Rect, Placement)

Zeigt das Kontextmenü in der bevorzugten Platzierung relativ zur angegebenen Auswahl an.

ShowForSelectionAsync(Rect)

Zeigt das Kontextmenü oberhalb der angegebenen Auswahl an.

public:
 virtual IAsyncOperation<IUICommand ^> ^ ShowForSelectionAsync(Rect selection) = ShowForSelectionAsync;
/// [Windows.Foundation.Metadata.Overload("ShowAsyncWithRect")]
IAsyncOperation<IUICommand> ShowForSelectionAsync(Rect const& selection);
[Windows.Foundation.Metadata.Overload("ShowAsyncWithRect")]
public IAsyncOperation<IUICommand> ShowForSelectionAsync(Rect selection);
function showForSelectionAsync(selection)
Public Function ShowForSelectionAsync (selection As Rect) As IAsyncOperation(Of IUICommand)

Parameter

selection
Rect

Die Koordinaten (in DIPs) des ausgewählten Rechtecks relativ zum Fenster. Das Kontextmenü befindet sich direkt oberhalb und zentriert auf diesem Rechteck, sodass die Auswahl nicht abgedeckt wird.

Hinweis

Für VB, C# und C++ ist dieses Fenster das CoreWindow,das dem Thread zugeordnet ist, der das Kontextmenü aufruft.

Gibt zurück

Ein IUICommand-Objekt , das den Kontextmenübefehl darstellt, der vom Benutzer aufgerufen wird, nachdem der ShowForSelectionAsync-Aufruf abgeschlossen wurde.

Wenn kein Befehl aufgerufen wird, gibt ShowForSelectionAsync NULL zurück.

Attribute

Beispiele

Bevor Sie ein Kontextmenü anzeigen können, müssen Sie einen Ereignislistener für das oncontextmenu-Ereignis hinzufügen. Das Kontextmenübeispiel lauscht beispielsweise auf das Ereignis für bestimmte HTML-Elemente und ruft dann die scenario1AttachmentHandler Funktion auf.

document.getElementById("attachment").addEventListener("contextmenu", attachmentHandler, false);
// We don't want to obscure content, so pass in the position representing the selection area.
menu.showForSelectionAsync(clientToWinRTRect(document.selection.createRange().getBoundingClientRect())).then(function (invokedCommand) {
    if (invokedCommand !== null) {
        switch (invokedCommand.id) {
            case 1: // Copy
                var selectedText = window.getSelection();
                copyTextToClipboard(selectedText);
                var message = "'Copy' button clicked and '" + /*@static_cast(String)*/selectedText + "' copied to clipboard";
                WinJS.log && WinJS.log(message, "sample", "status");
                break;
            case 2: // Highlight
                // Add command handler code here.
                WinJS.log && WinJS.log("'Highlight' button clicked", "sample", "status");
                break;
            case 3: // Look up
                // Add command handler code here.
                WinJS.log && WinJS.log("'Look up' button clicked", "sample", "status");
                break;
            default:
                break;
        }
    } else {
        // The command is null if no command was invoked.
        WinJS.log && WinJS.log("Context menu dismissed", "sample", "status");
    }
});

Darüber hinaus verwendet das Kontextmenübeispiel zwei Hilfsfunktionen (getSelectionRect und getclientCoordinates), um die Koordinaten für das Auswahlrechteck festzulegen.

// Converts from client to WinRT coordinates, which take scale factor into consideration.
function clientToWinRTRect(rect) {
    var zoomFactor = document.documentElement.msContentZoomFactor;
    return {
        x: (rect.left + document.documentElement.scrollLeft - window.pageXOffset) * zoomFactor,
        y: (rect.top + document.documentElement.scrollTop - window.pageYOffset) * zoomFactor,
        width: rect.width * zoomFactor,
        height: rect.height * zoomFactor
    };
}

Hinweise

Im Kontextmenübeispiel sehen Sie vollständige Codebeispiele, die das Erstellen und Anpassen von Kontextmenüs veranschaulichen.

Weitere Informationen

Gilt für:

ShowForSelectionAsync(Rect, Placement)

Zeigt das Kontextmenü in der bevorzugten Platzierung relativ zur angegebenen Auswahl an.

public:
 virtual IAsyncOperation<IUICommand ^> ^ ShowForSelectionAsync(Rect selection, Placement preferredPlacement) = ShowForSelectionAsync;
/// [Windows.Foundation.Metadata.Overload("ShowAsyncWithRectAndPlacement")]
IAsyncOperation<IUICommand> ShowForSelectionAsync(Rect const& selection, Placement const& preferredPlacement);
[Windows.Foundation.Metadata.Overload("ShowAsyncWithRectAndPlacement")]
public IAsyncOperation<IUICommand> ShowForSelectionAsync(Rect selection, Placement preferredPlacement);
function showForSelectionAsync(selection, preferredPlacement)
Public Function ShowForSelectionAsync (selection As Rect, preferredPlacement As Placement) As IAsyncOperation(Of IUICommand)

Parameter

selection
Rect

Die Koordinaten (in DIPs) des ausgewählten Rechtecks relativ zum Fenster.

Hinweis

Für VB, C# und C++ ist dieses Fenster das CoreWindow,das dem Thread zugeordnet ist, der das Kontextmenü aufruft.

preferredPlacement
Placement

Die bevorzugte Platzierung des Kontextmenüs relativ zum Auswahlrechteck.

Das Kontextmenü wird im preferredPlacement positioniert, wenn das Menü in das Fenster passt und die Auswahl nicht abdeckt. Wenn das Kontextmenü nicht in die bevorzugte Platzierung passt, wird eine andere Platzierung verwendet, die die Auswahl nicht abdeckt. Wenn das Kontextmenü an keiner anderen Stelle passt, wird eine Platzierung verwendet, die die Auswahl teilweise oder vollständig abdeckt.

Gibt zurück

Ein IUICommand-Objekt , das den Kontextmenübefehl darstellt, der vom Benutzer aufgerufen wird, nachdem der ShowForSelectionAsync-Aufruf abgeschlossen wurde.

Wenn kein Befehl aufgerufen wird, gibt ShowForSelectionAsyncNULL zurück.

Attribute

Beispiele

Bevor Sie ein Kontextmenü anzeigen können, müssen Sie einen Ereignislistener für das oncontextmenu-Ereignis hinzufügen. Das Kontextmenübeispiel lauscht beispielsweise auf das Ereignis für bestimmte HTML-Elemente und ruft dann die scenario1AttachmentHandler Funktion auf.

document.getElementById("attachment").addEventListener("contextmenu", attachmentHandler, false);
// Converts from client to WinRT coordinates, which take scale factor into consideration.
function clientToWinRTRect(rect) {
    var zoomFactor = document.documentElement.msContentZoomFactor;
    return {
        x: (rect.left + document.documentElement.scrollLeft - window.pageXOffset) * zoomFactor,
        y: (rect.top + document.documentElement.scrollTop - window.pageYOffset) * zoomFactor,
        width: rect.width * zoomFactor,
        height: rect.height * zoomFactor
    };
}

Hinweise

Im Kontextmenübeispiel sehen Sie vollständige Codebeispiele, die das Erstellen und Anpassen von Kontextmenüs veranschaulichen.

Weitere Informationen

Gilt für: