我也遇到了這個問題,但由於我的按鈕被一個ItemsControl動態創建的,也沒有好地方,從打電話的AddHandler無法使用公認的答案。
相反,我子類Windows.UI.Xaml.Controls.Button:
public sealed class PressAndHoldButton : Button
{
public event EventHandler PointerPressPreview = delegate { };
protected override void OnPointerPressed(PointerRoutedEventArgs e)
{
PointerPressPreview(this, EventArgs.Empty);
base.OnPointerPressed(e);
}
}
現在,如果你想消費的控制可以綁定到PointerPressPreview而不是PointerPressed
<local:PressAndHoldButton
x:Name="Somebutton"
Width="100"
Height="100"
PointerPressPreview="Somebutton_PointerPressed"/>
,您可以在重寫的OnPointerPressed方法中添加一些額外的邏輯,以便僅在左鍵單擊或右鍵單擊時觸發事件。任何你想要的。
@ACB這只是簡單的按鈕。我添加了代碼,以防它會幫助你 – xkillah