Silverlight NumericUpDown值更改触发两次
我正在使用Silverlight control Toolkit中的NumericUpDown控件,它有时会在一次更新中触发两次ValueChanged事件(只单击一次upper.或down按钮)。有人知道这种行为有什么原因吗Silverlight NumericUpDown值更改触发两次,silverlight,silverlight-toolkit,numericupdown,Silverlight,Silverlight Toolkit,Numericupdown,我正在使用Silverlight control Toolkit中的NumericUpDown控件,它有时会在一次更新中触发两次ValueChanged事件(只单击一次upper.或down按钮)。有人知道这种行为有什么原因吗 更多信息: 我有以下xaml: <StackPanel> <toolkit:NumericUpDown Name="numericUpDown1" Width="35
更多信息:
我有以下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");
}
}
私有无效值更改(对象发送方,RoutedPropertyChangingEventArgs e)
{
如果(numericUpDown1.Value+numericUpDown2.Value+numericUpDown3.Value>3)
{
e、 取消=真;
MessageBox.Show(“总共不超过3个”);
}
}
错误并非总是出现,但有时事件会触发两次,即使我只有3次的总和,警报也会出现。。。
例如(并非所有时间都发生):
第一个增加到2,第二个增加到1,第三个增加到1。将显示一条消息,该消息是正确的。将第一个减少到1,如果将第三个增加到1,它将触发消息,因为事件会触发两次。。。(同样,并非每次都会发生这种情况)我认为是
消息框本身的模态特性导致了问题。用你的代码我可以重现这个问题。我还可以得到它,这样当总数只有0或1时,单击一个框可以使它跳到3
然而,当我取出MessageBox
时,一切都按预期工作。我认为是MessageBox
本身的模态特性导致了问题。用你的代码我可以重现这个问题。我还可以得到它,这样当总数只有0或1时,单击一个框可以使它跳到3
但是,当我取出消息框时,一切都按预期进行。NumericUpDown使用一个重复按钮,可以多次触发单击事件。如果您的NumericUpDown控件不需要非常高(如您发布的示例中所示,它不接受大于3的总和),您可以将控件的模板更改为使用按钮
注意:我尝试只更改喷丝头样式模板,但没有成功。我不得不更改NumericUpDown样式,指向我修改过的SpinnerStyle版本NumericUpDown使用了一个可多次触发click事件的RepeatButton。如果您的NumericUpDown控件不需要非常高(如您发布的示例中所示,它不接受大于3的总和),您可以将控件的模板更改为使用按钮
注意:我尝试只更改喷丝头样式模板,但没有成功。我必须更改NumericUpDown样式,并且指向我修改的喷丝头样式版本我无法重现此问题,您能否提供更多详细信息。信息扩展为更多信息,提前感谢。感谢Anthony提供该版本…:)我无法重现此问题,您能提供更多详细信息吗。信息扩展为更多信息,提前感谢。感谢Anthony提供该版本…:)