我在表单上有2个控件。一个 numericUpDown (来自Silverlight工具包)和一个简单的 矩形 。
在Rectangle的 MouseLeftButtonDown 上,我弹出一个带有numericUpDown值的MessageBox。
如果我使用箭头来更改numericUpDown的值,那么每次都可以。但是如果我手动编辑值(使用键盘)并立即单击Rectangle,它将显示numericUpDown的先前值。如果我在矩形上单击一个秒时间,它将显示新值。
在 Rectangle.MouseLeftButtonDown 事件后引发 numericUpDown.ValueChanged 事件。
这是一个Silverlight错误吗?有人知道解决方法吗?
(顺便说一下,我无法更改我的Rectangle控件或事件)
答案 0 :(得分:0)
作为解决方法,我建议你创建自己的控件,如:
public class MyNumericUpDown : NumericUpDown
{
private TextBox _textBox;
public void Sync()
{
ApplyValue(_textBox.Text);
}
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
_textBox = (TextBox)GetTemplateChild("Text");
}
}
现在,您可以使用方法Sync将显示文本与控件Value属性同步。您可以声明性地或在代码后面从XAML调用方法。在你的情况下:
private void Rectangle_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
myNumericUpDown.Sync();
MessageBox.Show(myNumericUpDown.Value.ToString());
}