Xaml按钮是"点击"如果它在触摸屏上按住

时间:2017-02-24 19:25:10

标签: windows xaml uwp touch uwp-xaml

我正在使用C ++开发Windows UWP应用程序。我想添加一个按钮,可以左键单击或右键单击并执行相应的任务。

该按钮在使用鼠标的普通设备上完美运行。不幸的是,在触摸屏上,如果用户按下按钮,则会触发左键单击和右键单击事件。

我正在使用"点击"处理左键单击事件和" RightTapped"处理右键单击事件。有关如何在用户按住按钮时禁用左键单击事件的任何建议?谢谢!

XAML代码很简短:

<Button x:Name="m_NewPageButton"
    Content="New Page"
    Height="48"
    Width="199"
    Click="OnClick"
    RightTapped="OnRightClick"/>

这里是cpp代码:

void MainPage::OnClick()
{
    // Left click task
}

void MainPage::OnRightClick()
{
    // Right click task
}

编辑:

谢谢大家,解决方案是将左键单击处理程序更改为,不会通过按住来触发。

2 个答案:

答案 0 :(得分:1)

您可以使用“保持”事件来检测点击并按住。使用Tapped事件进行单击(或单击)。 Tapped事件应仅在快速点击和释放时触发。鼠标特定点击将提升Tapped,但触摸点击并保持不会。

答案 1 :(得分:1)

Hacky但是有效......

    private bool rightClicked;

    private async void Button_Click(object sender, RoutedEventArgs e)
    {
        if (rightClicked)
            return;

        await new MessageDialog("left").ShowAsync();
    }

    private async void Button_RightTapped(object sender, RightTappedRoutedEventArgs e)
    {
        rightClicked = true;
        await new MessageDialog("right").ShowAsync();
        rightClicked = false;
    }

我猜这是设计中的一个缺陷.. :(

实际上...如果您使用按钮的Tapped和RightTapped事件,它可以正常工作。所以在这种情况下,只需用Tapped替换Clicked,一切都很好......然后你可以忽略我上面提到的黑客。