MouseLeftButtonDown之后的numericUpDown ValueChanged

时间:2011-05-13 13:49:13

标签: silverlight silverlight-toolkit

我在表单上有2个控件。一个 numericUpDown (来自Silverlight工具包)和一个简单的 矩形

在Rectangle的 MouseLeftButtonDown 上,我弹出一个带有numericUpDown值的MessageBox。

如果我使用箭头来更改numericUpDown的值,那么每次都可以。但是如果我手动编辑值(使用键盘)并立即单击Rectangle,它将显示numericUpDown的先前值。如果我在矩形上单击一个秒时间,它将显示新值。

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

这是一个Silverlight错误吗?有人知道解决方法吗?

(顺便说一下,我无法更改我的Rectangle控件或事件)

1 个答案:

答案 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());
        }