0

所以我在 WinRT UserControl 上有一个按钮,我想在按住按钮时增加或减少一个整数值 (CurrentValue)。

我最终得到了下面的这个实现,它可以工作但看起来不太好或者可以吗?

我搜索了一个要使用的事件,但我在使用 click 并将 button.clickmode 设置为按下时卡住了。

我使用 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" />
4

1 回答 1

2

更好的方法是使用一个RepeatButton,它完全符合你想要复制的功能。它有一个 Delay 属性来等待第一次重复单击,以及一个 Interval 属性来控制引发 Click 事件的频率。

于 2012-11-25T19:17:00.630 回答