2012-11-25 50 views
0

所以我在WinRT UserControl上有一個按鈕,我想在按住按鈕的同時增大或減小整數值(CurrentValue)。按下按鈕時更好的邏輯循環方式?

我結束了這個實現下面,它的工作,但不看好,還是沒關係?

我搜索了一個要使用的事件,但使用click並設置button.clickmode按下了卡住了。

我使用bool _increasePrint跟蹤如果已經推入,所以我沒有得到多個事件觸發器。在用戶控件

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

回答

2

更好的方法

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是使用一個RepeatButton它做了你要複製的是什麼。它具有等待第一次重複點擊的Delay屬性以及控制Click事件引發頻率的Interval屬性。