giaosucan
Вы можете добавить событие mouseLeftButtonDown к этой кнопке. И обнаружьте событие long click с помощью этого метода
/// <summary>
/// Detect Mouse Long Click
/// </summary>
/// <param name="element">Framework</param>
/// <param name="duration">Set duration of long click</param>
/// <returns>true: Long Click false: Not Long Click</returns>
public static Task<bool> MouseDown(this FrameworkElement element, TimeSpan duration)
{
DispatcherTimer timer = new DispatcherTimer();
TaskCompletionSource<bool> task = new TaskCompletionSource<bool>();
timer.Interval = duration;
MouseButtonEventHandler touchUpHandler = delegate
{
timer.Stop();
if (task.Task.Status == TaskStatus.Running)
{
task.SetResult(false);
}
};
element.PreviewMouseUp += touchUpHandler;
timer.Tick += delegate
{
element.PreviewMouseUp -= touchUpHandler;
timer.Stop();
task.SetResult(true);
};
timer.Start();
return task.Task;
}
Вызовите метод в вашем событии btn_MouseLeftButtonDown
Например
private async void btn_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
boolean isLongPress = await MouseDown(e.Source as Button, TimeSpan.FromSeconds(0.4));
if (isLongPress) {
// long press
} else {
//short press
}
}