Проблема с ручным редактированием текстового поля, связанного со свойством, которое постоянно обновляется - PullRequest
2 голосов
/ 10 июля 2009

У меня есть текстовое поле, привязанное к свойству. Свойство постоянно обновляется с помощью таймера. Я пытаюсь сделать так, чтобы, когда я набирал что-то в текстовом поле, текстовое поле перестало обновляться из свойства. Есть ли способ сделать это?

Спасибо!

Ответы [ 4 ]

2 голосов
/ 10 июля 2009

Я не WPF или эксперт по связыванию данных, так что может быть лучше, но я бы сказал, что вам придется обрабатывать события GotFocus и LostFocus и добавлять / удалять привязку данных в этих обработчиках событий.

1 голос
/ 10 июля 2009

Если у вас есть доступ к объекту Binding, вы можете установить для его свойства UpdateSourceTrigger значение Explicit, что предотвратит автоматическое обновление.

EDIT

Возможно, что-то вроде этого

UpdateSourceTrigger old;

protected override void OnGotFocus(RoutedEventArgs e)
{
    Binding b = BindingOperations.GetBinding(textBox1, TextBox.TextProperty);
    old = b.UpdateSourceTrigger;
    b.UpdateSourceTrigger = UpdateSourceTrigger.Explicit;
}

protected override void OnLostFocus(RoutedEventArgs e)
{
    Binding b = BindingOperations.GetBinding(textBox1, TextBox.TextProperty);
    b.UpdateSourceTrigger = old;
}

Конечно, это короткая форма, без проверки нуля и т. Д.

1 голос
/ 10 июля 2009

Я бы сделал что-то в порядке:

  public void Timer_Tick(object sender,EventArgs eArgs)
  {
    if(!Textbox.GotFocus())
    {
          // Regular updating of textbox  
    }
  }
0 голосов
/ 10 июля 2009

Вам, вероятно, будет полезен этот предыдущий вопрос StackOverflow: .NET --- Элемент управления Textbox - подождите, пока пользователь закончит ввод . Вы должны быть в состоянии изменить это довольно легко, чтобы делать то, что вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...