numericUpDown ValueChanged after MouseLeftButtonDown - PullRequest
0 голосов
/ 13 мая 2011

У меня есть 2 элемента управления в форме.Один numericUpDown (из набора инструментов Silverlight) и простой прямоугольник .

на MouseLeftButtonDown прямоугольника. Я выскакиваю MessageBox со значением numericUpDown.

Если я использую стрелки для изменения значения numericUpDown, все в порядке.Но если я отредактирую значение вручную (с помощью клавиатуры) и сразу же нажму на прямоугольник, он покажет предыдущее значение numericUpDown.Если я щелкну второй раз по прямоугольнику, он покажет новое значение.

Событие numericUpDown.ValueChanged возникает после Rectangle.MouseLeftButtonDown событие.

Это ошибка Silverlight?Кто-нибудь знает обходной путь для этого?

(кстати, я не могу изменить свои элементы управления Rectangle или события)

1 Ответ

0 голосов
/ 13 мая 2011

В качестве обходного пути я предлагаю вам создать свой собственный элемент управления, например:

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