Windows runtime 按下按钮时逻辑循环的更好方式?

Windows runtime 按下按钮时逻辑循环的更好方式?,windows-runtime,winrt-xaml,winrt-async,Windows Runtime,Winrt Xaml,Winrt Async,所以我在WinRT用户控件上有一个按钮,我想在按住按钮的同时增加或减少一个整数值(CurrentValue) 我在下面完成了这个实现,它可以工作,但看起来不太好,或者还可以吗 我搜索了一个要使用的事件,但在使用“单击”并将按钮设置为“按下”时遇到了问题 我使用bool_increasePushed来跟踪是否已经被推入,这样我就不会得到多个事件触发器 private bool _increasePushed; private const int PushDelay = 200;

所以我在WinRT用户控件上有一个按钮,我想在按住按钮的同时增加或减少一个整数值(CurrentValue)

我在下面完成了这个实现,它可以工作,但看起来不太好,或者还可以吗

我搜索了一个要使用的事件,但在使用“单击”并将按钮设置为“按下”时遇到了问题

我使用bool_increasePushed来跟踪是否已经被推入,这样我就不会得到多个事件触发器

    private bool _increasePushed;
    private const int PushDelay = 200;

    private async void ButtonIncreaseClick(object sender, RoutedEventArgs e)
    {
        var button = sender as Button;
        if (button == null) return;

        if (_increasePushed)
        {
            return;
        }

        _increasePushed = true;

        while (button.IsPressed)
        {
            CurrentValue++;
            await Task.Delay(PushDelay);
        }

        _increasePushed = false;
    }
用户控件上的XAML

    <Button x:Name="buttonIncrease" Content="Bla bla"
            Click="ButtonIncreaseClick" ClickMode="Press" />

更好的方法是使用一个与您试图复制的完全相同的方法。它有一个等待第一次重复单击的延迟属性,以及一个控制触发单击事件频率的间隔属性