Получить содержимое текстового поля при редактировании - PullRequest
2 голосов
/ 25 марта 2019

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

xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:cmd="http://www.galasoft.ch/mvvmlight"
...

<TextBox Text="{Binding Search}" >
      <i:Interaction.Triggers>
          <i:EventTrigger EventName="KeyDown">
              <cmd:EventToCommand Command="{Binding SearchCommand}"/>
           </i:EventTrigger>
       </i:Interaction.Triggers>
 </TextBox>

У модели представления:

public ICommand SearchCommand { get; private set; }
public MyViewModel()
{
  SearchCommand = new RelayCommand(SearchMethod);
}

void SearchMethod()
 {
   if(Search==null)
     MessageBox.Show("Search text is null");
 }
string search;
public string Search
{
        get { return search; }
        set
        {
            Set(() => Search, ref search, value);
            RaisePropertyChanged("Search");
        }
 }

Но каждый раз, когда я вводю какой-то текст в текстовое поле, отображается сообщение: Search text is null

1 Ответ

0 голосов
/ 25 марта 2019

По умолчанию привязка оценивается, когда TextBox теряет фокус . Ваше событие запускается при каждом нажатии клавиши.

Чтобы изменить это поведение, вы можете установить UpdateSourceTrigger в Binding:

<TextBox Text="{Binding Search, UpdateSourceTrigger=PropertyChanged}" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...