UWP Выполнить запрос как печатать - MVVM - PullRequest
0 голосов
/ 17 декабря 2018

Я создаю приложение UWP для компании, в которой я работаю, и один из запросов - запуск поискового запроса по мере его ввода.Я успешно сделал это, но я сломал модель MVVM, чтобы сделать это.Вот мой текущий код, и если есть способ сделать его более дружественным к MVVM и дать другим пример для работы, было бы здорово.

VIEW:

<TextBox x:Name="SearchTxtBx" PlaceholderText="Search..." Visibility="Collapsed" Text="{x:Bind ViewModel.SearchValue, Mode=TwoWay}" Grid.Row="6" Grid.ColumnSpan="2" KeyUp="SearchTxtBx_KeyUp" />

CODE BEHIND:

 private void SearchTxtBx_KeyUp(object sender, KeyRoutedEventArgs e)
    {
        if ((bool)FNSearchOpt.IsChecked || (bool)LNSearchOpt.IsChecked)
        {
            var testText = SearchTxtBx.Text;

            ViewModel.GetSearchResults(testText);
        }

    }

VIEWMODEL:

 public void GetSearchResults(string typedText = "")
    {
        string queryString = "";

        if((FNSearchCheck || LNSearchCheck) && !typedText.isNullOrWhiteSpace())
        {
            SearchValue = typedText;
        }

Проблема, с которой я сталкиваюсь при переходе прямо к методу в Viewmodel, заключается в том, что он не будет обновлять свойство, пока не потеряет фокус, поэтому значение поискаnull, если я не использую код для его установки.

Опять же, любая помощь, которая сделает этот MVVM более дружественным, будет принята с благодарностью.Спасибо!

1 Ответ

0 голосов
/ 17 декабря 2018

Просто установите для свойства UpdateSourceTrigger значение PropertyChanged:

<TextBox ... Text="{x:Bind ViewModel.SearchValue, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" ... />

Затем свойство источника (ViewModel.SearchValue) должно обновляться при каждом изменении целевого значения привязки, т. Е. При каждом нажатии клавиши.

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