windows - Xaml Button er 'klikket', hvis den trykkes og holdes på en berøringsskærm

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg udvikler en Windows UWP App med C ++. Jeg vil gerne tilføje en knap, der enten kan venstre klikkes eller højreklikkes og gøre tilsvarende opgave.


Knappen fungerer perfekt på normale enheder med musen. Uheldigvis på berøringsskærmen, hvis brugere trykker og holder knappen nede, aktiveres både venstre-klik og højreklik på hændelser.


Jeg bruger 'Klik' til at håndtere venstre klik begivenhed og 'RightTapped' til at håndtere højre klik begivenhed. Ethvert forslag til, hvordan du deaktiverer venstre klik-begivenhed, når brugerne trykker på og holder knappen nede? Tak skal du have!


XAML-koden er kort:


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


Og her er cpp-koden:


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

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


Redigere:


Tak gutter, løsningen er at ændre venstre klik handler til, som ikke vil blive udløst af tryk og hold.

Bedste reference


Hacky men arbejder ...


    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;
    }


Jeg gætter på dette er en fejl i designet .. :(


Faktisk ... Hvis du bruger knappens Tapped og RightTapped-hændelser, fungerer det som det skal. Så i dette tilfælde skal du bare erstatte Clicked med Tapped og alt er godt ... Så kan du ignorere det hack jeg sætter over.

Andre referencer 1


Du kan bruge holdingshændelsen til at registrere et tryk og holde. Brug den Tappede hændelse til et enkelt tryk (eller klik). Den Tappede hændelse bør kun brænde for berøring ved hurtig tryk og frigivelse. Det musespecifikke klik vil hæve Tapped, men et tryk og hold vil ikke.