2011-03-11 173 views
1

我使用Silverlight控件工具包中的NumericUpDown控件,它有時會在一次更新中雙擊ValueChanging事件(單擊上一個或下一個按鈕)。有沒有人知道這種行爲的任何workarround?Silverlight NumericUpDown ValueChanging兩次觸發


更多信息:
我有下面的XAML代碼:

<StackPanel> 
     <toolkit:NumericUpDown Name="numericUpDown1" 
           Width="35" 
           Minimum="0" 
           Maximum="3" 
           ValueChanging="valueChanging" /> 
     <toolkit:NumericUpDown Name="numericUpDown2" 
           Width="35" 
           Minimum="0" 
           Maximum="3" 
           ValueChanging="valueChanging" /> 
     <toolkit:NumericUpDown Name="numericUpDown3" 
           Width="35" 
           Minimum="0" 
           Maximum="3" 
           ValueChanging="valueChanging" /> 
    </StackPanel> 

和代碼的事件:

private void valueChanging(object sender, RoutedPropertyChangingEventArgs<double> e) 
    { 
     if (numericUpDown1.Value + numericUpDown2.Value + numericUpDown3.Value > 3) 
     { 
      e.Cancel = true; 
      MessageBox.Show("No more than 3 in total"); 
     } 
    } 

的錯誤出現不是所有的時間,但有些時候該事件被激發兩次,並且即使當我剛剛總共有3 ... (即並非所有時間都發生)時,警報也會出現: 增加到2第一個,然後到第二個,第一個到第三個。顯示一條消息並且它是正確的。將firt降低到1,並且如果將第三個增加到1,則會觸發該消息,因爲事件被兩次觸發......(再次,並非所有這一切都發生)

+0

我無法重現此問題,您能否提供更多詳細信息。 – AnthonyWJones 2011-03-11 09:31:13

+0

信息擴展與更多的信息,在此先感謝。 – KodiakMx 2011-03-11 18:27:32

+0

感謝安東尼爲那個版本:) – KodiakMx 2011-03-11 19:17:05

回答

0

NumericUpDown使用RepeatButton,它可以多次觸發點擊事件。如果您的NumericUpDown控件不需要變得非常高(例如您發佈的示例中,它不接受大於3的總和),則可以將控件的模板更改爲使用Button。

注:我試着改變只是SpinnerStyle模板,但沒有奏效。我不得不改變NumericUpDown風格,並指向我修改後的SpinnerStyle版本

1

我認爲它的模態性質MessageBox本身就是引入了這個問題。用你的代碼我可以重現這個問題。我也可以得到它,所以當總數只有0或1時,單擊一個盒子就可以使它跳到3.

但是,當我將MessageBox取出時,一切都按預期工作。