如何在silverlight / wp7中编程保存事件

时间:2012-07-19 19:35:58

标签: silverlight windows-phone-7

我的按钮事件有点问题。我编程了一个按钮,将特定值减少了1(单击),我想在按住按钮的同时减少它。我正在使用Silverlight,而不是XNA。

myTimer.Change(0, 100);
private void OnMyTimerDone(object state)
    {
        Deployment.Current.Dispatcher.BeginInvoke(() =>
            {
                if (rightButton.IsPressed)
                {
                    rightButton_Click(null, null);
                }
            });
    }

此代码在开始时正常工作,但之后我无法单击,因为它总是调用hold事件。

2 个答案:

答案 0 :(得分:1)

两个建议,第一个是停止计时器(使用DispatcherTimer),如果isPressed为false

void Button_MouseLeftButtonDown(object sender, EventArgs e)
{
    myTimer.Start();
}

void OnTimerTick(object s, EventArgs args)
{
    if(rightButton.IsPressed == false)
    {
        myTimer.Stop();
    }
    else
    {
        // decrease value
    }
}

第二个是停止MouseLeftButtonUp事件上的计时器

答案 1 :(得分:1)

尝试使用 RepeatButton silverlight控件,而不是使用普通的按钮

以下是如何使用它的示例:

XAML代码:

<RepeatButton x:Name="rbtnDecrease" Content="Decrease" Delay="200" Interval="100" Click="rbtnDecrease_Click" />
  

延迟: RepeatButton在开始重复之前按下时等待的时间量(以毫秒为单位)。

     

间隔:重复开始后重复次数之间的时间量(以毫秒为单位)。

C#代码:

private int tempCount = 100; // A temp Variable used as an Example

private void rbtnDecrease_Click(object sender, RoutedEventArgs e){

    // Add your Button Click/Repeat Code Here...

    // Example of Decreasing the value of a Variable
    tempCount--;
}