Поделиться через


PopupMenu.ShowForSelectionAsync Метод

Определение

Перегрузки

ShowForSelectionAsync(Rect)

Отображает контекстное меню над указанным выбранным элементом.

ShowForSelectionAsync(Rect, Placement)

Отображает контекстное меню в предпочтительном размещении относительно указанного выделения.

ShowForSelectionAsync(Rect)

Отображает контекстное меню над указанным выбранным элементом.

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)

Параметры

selection
Rect

Координаты (в DIP) выбранного прямоугольника относительно окна. Контекстное меню размещается непосредственно над этим прямоугольником по центру, чтобы выделение не было охвачено.

Примечание

Для VB, C# и C++ это окно является Окном CoreWindow , связанным с потоком, вызывающим контекстное меню.

Возвращаемое значение

Объект IUICommand , представляющий команду контекстного меню, вызываемую пользователем после завершения вызова ShowForSelectionAsync.

Если команда не вызывается, ShowForSelectionAsync возвращает значение NULL.

Атрибуты

Примеры

Перед отображением контекстного меню необходимо добавить прослушиватель событий для события oncontextmenu . Например, пример контекстного меню прослушивает событие в определенных элементах HTML, а затем вызывает функцию scenario1AttachmentHandler .

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

Кроме того, в примере контекстного меню используются две вспомогательные функции (getSelectionRect и getclientCoordinates) для задания координат для прямоугольника выбора.

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

Комментарии

Полные примеры кода, демонстрирующие создание и настройку контекстных меню, см. в примере контекстного меню.

См. также раздел

Применяется к

ShowForSelectionAsync(Rect, Placement)

Отображает контекстное меню в предпочтительном размещении относительно указанного выделения.

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)

Параметры

selection
Rect

Координаты (в DIP) выбранного прямоугольника относительно окна.

Примечание

Для VB, C# и C++ это окно является Окном CoreWindow , связанным с потоком, вызывающим контекстное меню.

preferredPlacement
Placement

Предпочтительное расположение контекстного меню относительно выделенного прямоугольника.

Контекстное меню размещается в preferredPlacement, если меню помещается в окне и не охватывает выделенный фрагмент. Если контекстное меню не помещается в предпочтительный вариант размещения, используется другое размещение, которое не охватывает выбранные элементы. Если контекстное меню не помещается в другое место, используется размещение, которое частично или полностью охватывает выбор.

Возвращаемое значение

Объект IUICommand , представляющий команду контекстного меню, вызываемую пользователем после завершения вызова ShowForSelectionAsync .

Если команда не вызывается, ShowForSelectionAsync возвращает значение NULL.

Атрибуты

Примеры

Перед отображением контекстного меню необходимо добавить прослушиватель событий для события oncontextmenu . Например, пример контекстного меню прослушивает событие в определенных элементах HTML, а затем вызывает функцию scenario1AttachmentHandler .

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

Комментарии

Полные примеры кода, демонстрирующие создание и настройку контекстных меню, см. в примере контекстного меню.

См. также раздел

Применяется к