2011-03-11 3 views
1

실버 라이트 컨트롤 툴킷의 NumericUpDown 컨트롤을 사용하고 있습니다. 한 번만 위 또는 아래 버튼을 한 번 클릭하여 ValueChanging 이벤트를 두 번 트리 거하는 경우가 있습니다. 아무도이 동작에 대한 workarround를 알고 있습니까?Silverlight NumericUpDown 두 번 트리거 된 값 변경


상세 정보 :
나는 다음과 같은 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로 늘린 다음 두 번째를 1로, 세 번째를 1로 늘립니다. 메시지가 표시되고 올바른 것입니다. 파이트를 1로 줄이고, 3을 1로 올리면 이벤트가 두 번 trigerred되기 때문에 메시지를 발생시킵니다 ... (다시, 항상 이런 일이 발생하지는 않습니다)

+0

이 문제를 재현 할 수 없으므로 자세한 내용을 제공 할 수 있습니까? – AnthonyWJones

+0

정보는 더 많은 정보와 함께 미리 감사드립니다. – KodiakMx

+0

그 판을위한 감사합니다 anthony ... :) – KodiakMx

답변

0

NumericUpDown은 Click 이벤트를 여러 번 발생시킬 수있는 RepeatButton을 사용합니다. NumericUpDown 컨트롤이 매우 높아야 할 필요가없는 경우 (예 : 3보다 큰 합계를 더 많이 허용하지 않는 곳에 게시 한 예제와 같이) 컨트롤의 템플릿을 변경하여 대신 Button을 사용할 수 있습니다.

참고 : SpinnerStyle 템플릿 만 변경하려고했지만 작동하지 않았습니다. NumericUpDown 스타일을 변경해야하고 SpinnerStyle의 수정 버전을 가리키고 있습니다.

1

나는 그 모달 특성을 생각합니다. 문제를 일으키는 MessageBox 그 자체의 코드를 사용하여 문제를 재현 할 수 있습니다. 또한 합계가 0 또는 1 일 때 상자를 한 번 클릭하면 3으로 점프 할 수 있습니다.

그러나 MessageBox을 가져 가면 예상대로 작동합니다.