2009-06-18 1 views
3

Так скажем, у меня есть приложение MVVM, и я хочу, чтобы пользователь заполнить TextBox и в то время как он заполняет его, я хочу, чтобы проверить, если он набрал в фамилии клиента.Как я могу показать моей модели ViewModel, что пользователь меняет текст в TextBox?

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

<ComboBox 
    ItemsSource="{Binding Customers}" 
    ItemTemplate="{StaticResource CustomerComboBoxTemplate}" 
    Margin="20" 
    HorizontalAlignment="Left" 
    SelectedItem="{Binding SelectedCustomer, Mode=TwoWay}"/> 

А вот как я получаю мой ViewModel, чтобы знать, когда пользователь переехал Slider:

<Slider Minimum="0" 
     Margin="10" 
     Width="400" 
     IsSnapToTickEnabled="True" 
     Maximum="{Binding HighestCustomerIndex, Mode=TwoWay}" 
     Value="{Binding SelectedCustomerIndex, Mode=TwoWay}"/> 

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

<TextBox 
    Width="200" 
    Text="{Binding TypedCustomerName}"/> 

Но как я могу получить мой ViewModel, чтобы знать, когда пользователь имеет измененный текст в TextBox, как он типов, например что-то вроде этого:

псевдокод (вызывает ошибку, так как TextChanged событие):

<TextBox 
    Width="200" 
    TextChanged="{Binding CurrentTextInTextBox}"/> 

ответ

9

Если вам нравится, вместо обновления ViewModel, когда TextBox потерял фокус, вы можете настроить его на обновление по мере их ввода. UpdateSourceTrigger в свойстве Text binding TextBox по умолчанию используется как LostFocus вместо PropertyChanged, как и большинство других элементов управления, однако вы можете явно установить его в привязке. Таким образом, свойство TypedCustomerName в VM или M будет обновляться по мере его изменения в пользовательском интерфейсе.

<TextBox 
Width="200" 
Text="{Binding TypedCustomerName, UpdateSourceTrigger=PropertyChanged}"/> 

Если это не то, что вы ищете, вы можете также использовать AttachedCommandBehaviors, чтобы привязать TextChanged перенаправленное событие к ICommand, который существует в вашей модели представления.

+0

+1,000,000,000. –

1

TextBoxex по умолчанию для обновления на LostFocus. Установите UpdateSourceTrigger = "PropertyChanged" для обновления при вводе пользователем.

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

  • Нет связанных вопросов^_^