2011-05-13 69 views
0

我有2个窗体上的控件。 One numericUpDown(来自Silverlight Toolkit)和一个简单的矩形numericUpdown ValueChanged MouseLeftButtonDown后

在我弹出与价值的NumericUpDown一个MessageBox矩形的的MouseLeftButtonDown

如果我使用箭头来更改numericUpDown的值,everyting很好。但是,如果我手动(使用键盘)编辑值并立即单击矩形,它将显示numericUpDown的前一个值。如果我在矩形上点击第二个时间,它将显示新的值。

numericUpDown.ValueChanged事件的Rectangle.MouseLeftButtonDown事件后引发。

这是一个Silverlight错误?任何人都知道这个解决方法?

(顺便说一句,我不能改变我的矩形控件或事件)

回答

0

至于解决办法,我建议你创建你自己的控制,如:

public class MyNumericUpDown : NumericUpDown 
    { 
     private TextBox _textBox; 
     public void Sync() 
     { 
      ApplyValue(_textBox.Text); 
     } 
     public override void OnApplyTemplate() 
     { 
      base.OnApplyTemplate(); 
      _textBox = (TextBox)GetTemplateChild("Text"); 
     } 
    } 

现在你可以使用方法同步到syncronize与控制显示文本价值财产。您可以通过声明方式或在代码后面调用XAML的方法。在你的情况下:

private void Rectangle_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
     { 
      myNumericUpDown.Sync(); 
      MessageBox.Show(myNumericUpDown.Value.ToString()); 
     }