PopupMenu.ShowForSelectionAsync 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
多載
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
};
}
備註
您可以看到完整的程式代碼範例,示範如何在 操作功能表範例中建立和自定義操作功能表。
另請參閱
- IUICommand
- Rect
- ShowForSelectionAsync(Rect, Placement)
- UICommand
- 新增操作功能表
- 操作功能表範例
- 的指導方針和檢查清單
- oncontextmenu
適用於
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)
參數
- 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
};
}
備註
您可以看到完整的程式代碼範例,示範如何在 操作功能表範例中建立和自定義操作功能表。