Как форсировать событие TextChanged на WPF TextBox и уделить внимание?

Я создаю числовой TextBox в WPF с двумя кнопками, чтобы увеличить и уменьшить значение.

Я имею, создают два RoutedCommand для управления behiavor, и они работают хорошо. Существует только одна проблема, которую я хотел бы решить. Я хотел бы это, управление уведомляет весь объект, связанный с его TextProperty, когда команда увеличения или уменьшения выполняется.

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

Любая справка действительно ценится, Спасибо

8
задан viky 30 March 2010 в 17:55
поделиться

2 ответа

Используйте UpdateSourceTrigger = "Explicit" в привязке, а в событии TextChanged обновите BindingSource . , чтобы вы пишете что-то вроде этого :

<NumericTextBox x:Name="control" Text={Binding Path=MyProperty}/>

вместо этого сделайте это

<NumericTextBox x:Name="control" Text={Binding Path=MyProperty, UpdateSourceTrigger=Explicit}/>

и в обработчике событий TextChanged обновите привязку.

control.GetBindingExpression(NumericTextBox.TextProperty).UpdateSource();

и готово. Надеюсь, это поможет !!

12
ответ дан 5 December 2019 в 04:42
поделиться

По умолчанию привязка свойства Text к TextBox заключается в обновлении LostFocus. Это можно изменить в пользовательском элементе управления, переопределив метаданные в TextProperty в статическом ctor:

static NumericTextBox()
{
    TextProperty.OverrideMetadata(
        typeof(NumericTextBox),
        new FrameworkPropertyMetadata("", // default value
            FrameworkPropertyMetadataOptions.BindsTwoWayByDefault,
            null,  // property change callback
            null,  // coercion callback
            true,  // prohibits animation
            UpdateSourceTrigger.PropertyChanged));
}
2
ответ дан 5 December 2019 в 04:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: