2013-11-20 4 views
14

У меня есть текстовое поле с текстовым свойством, привязанным к viewmodel. Я привязал событие TextChanged к viewmodel.WPF MVVM текстовое связывание vs changedText событие

Но проблема в том, что событие вызывает каждый знак, добавленный в текстовое поле (это хорошо), и текст в режиме просмотра обновляется, когда текстовое поле потеряло фокус (это плохо для меня).

Как сделать это свойство текста освежающим после каждого знака?

Или как отправить отправителя в качестве параметра? Я думаю, что отправитель мог бы обновить данные.

Мой интерактивность XAML:

<interactivity:Interaction.Triggers> 
    <interactivity:EventTrigger EventName="TextChanged"> 
     <helpers:CustomCommandInvoker Command="{Binding UnlockChangedCommand}" /> 
    </interactivity:EventTrigger> 
</interactivity:Interaction.Triggers> 

Я использую RelayCommand.

ответ

38

На это очень простой ответ; используйте UpdatePropertyTrigger = PropertyChanged. Это обновит ваше свойство VM каждый раз, когда персонаж будет изменен. Нет необходимости для триггеров или нет команды :-)

<TextBox Text="{Binding ViewModelProperty, UpdateSourceTrigger=PropertyChanged}"></TextBox> 

Читать здесь для получения дополнительной информации: http://msdn.microsoft.com/en-us/library/system.windows.data.updatesourcetrigger(v=vs.110).aspx

+0

Связывание довольно хорошо, я не могу отступить к старым методам работы (обработчики событий и т.д ..) кажется настолько логичным, когда я читаю это сейчас .. спасибо – user1841243

Смежные вопросы