この問題が発生しましたが、ボタンが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);
}
}
これで、消費コントロールはPointerPressedではなくPointerPressPreviewにバインドできます
<local:PressAndHoldButton
x:Name="Somebutton"
Width="100"
Height="100"
PointerPressPreview="Somebutton_PointerPressed"/>
必要に応じて、オーバーライドされたOnPointerPressedメソッドにいくつかの追加ロジックを詰め込んで、左クリックまたは右クリックでのみイベントを発生させることができます。あなたが望むものなら、なんでも。