0

そのため、WinRT UserControlにボタンがあり、ボタンを押している間、整数値(CurrentValue)を増減します。

私は以下のこの実装に行き着きました。これは機能しますが、見栄えがよくないか、大丈夫ですか?

使用するイベントを検索しましたが、クリックを使用して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;
    }

UserControlのXAML

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

1 に答える 1

2

より良い方法は、複製しようとしていることを正確に実行するRepeatButtonを使用することです。最初に繰り返されるクリックを待機するDelayプロパティと、Clickイベントが発生する頻度を制御するIntervalプロパティがあります。

于 2012-11-25T19:17:00.630 に答える