PopupMenu.ShowForSelectionAsync Método

Definición

Sobrecargas

ShowForSelectionAsync(Rect)

Muestra el menú contextual situado encima de la selección especificada.

ShowForSelectionAsync(Rect, Placement)

Muestra el menú contextual en la ubicación preferida en relación con la selección especificada.

ShowForSelectionAsync(Rect)

Muestra el menú contextual situado encima de la selección especificada.

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)

Parámetros

selection
Rect

Coordenadas (en DIP) del rectángulo seleccionado, en relación con la ventana. El menú contextual se coloca directamente encima y se centra en este rectángulo para que la selección no esté cubierta.

Nota

Para VB, C# y C++, esta ventana es coreWindow asociada al subproceso que llama al menú contextual.

Devoluciones

Objeto IUICommand que representa el comando de menú contextual invocado por el usuario, una vez completada la llamada a ShowForSelectionAsync.

Si no se invoca ningún comando, ShowForSelectionAsync devuelve null.

Atributos

Ejemplos

Para poder mostrar un menú contextual, debe agregar un agente de escucha de eventos para el evento oncontextmenu . Por ejemplo, el ejemplo de menú contextual escucha el evento en elementos HTML específicos y, a continuación, llama a la scenario1AttachmentHandler función .

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");
    }
});

Además, el ejemplo de menú contextual usa dos funciones auxiliares (getSelectionRect y getclientCoordinates) para establecer las coordenadas del rectángulo de selección.

// 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
    };
}

Comentarios

Puede ver ejemplos de código completos que muestran cómo crear y personalizar menús contextuales en el ejemplo de menú contextual.

Consulte también

Se aplica a

ShowForSelectionAsync(Rect, Placement)

Muestra el menú contextual en la ubicación preferida en relación con la selección especificada.

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)

Parámetros

selection
Rect

Coordenadas (en DIP) del rectángulo seleccionado, en relación con la ventana.

Nota

Para VB, C# y C++, esta ventana es coreWindow asociada al subproceso que llama al menú contextual.

preferredPlacement
Placement

Ubicación preferida del menú contextual con respecto al rectángulo de selección.

El menú contextual se coloca en preferredPlacement si el menú se ajusta a la ventana y no cubre la selección. Si el menú contextual no cabe en la ubicación preferida, se usa otra ubicación que no cubre la selección. Si el menú contextual no cabe en ningún otro lugar, se utiliza una ubicación que cubre parcialmente o totalmente la selección.

Devoluciones

Objeto IUICommand que representa el comando de menú contextual invocado por el usuario, una vez completada la llamada a ShowForSelectionAsync .

Si no se invoca ningún comando, ShowForSelectionAsync devuelve null.

Atributos

Ejemplos

Para poder mostrar un menú contextual, debe agregar un agente de escucha de eventos para el evento oncontextmenu . Por ejemplo, el ejemplo de menú contextual escucha el evento en elementos HTML específicos y, a continuación, llama a la scenario1AttachmentHandler función .

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
    };
}

Comentarios

Puede ver ejemplos de código completos que muestran cómo crear y personalizar menús contextuales en el ejemplo de menú contextual.

Consulte también

Se aplica a