Как получить текст из Xamarin SearchBar в viewmodel - PullRequest
0 голосов
/ 21 марта 2019

Попытка получить текст из панели поиска Xamarin Forms в мою модель просмотра, и что-то не хватает, не знаю что.Прочитав много постов, я почти на месте, так как intellisense автоматически сгенерировал для меня метод с obj в качестве параметра, который уже был там, но когда я его использовал, он был нулевым, так что что-то где-то все еще отсутствовало.Вот соответствующие строки кода (поэтому, если вы что-то не видите, тогда предположите, что это то, чего мне не хватает, и скажите мне :-)) ...

MAINPAGE...
SearchBar LookupBar;

LookupBar=new SearchBar {Placeholder="Enter search term"};

vm=new Viewmodel();

LookupBar.SearchCommand = vm.TestSearchCommand;

LookupBar.SearchCommandParameter=LookupBar.Text;

VIEWMODEL...
public ICommand TestSearchCommand { get; }
(in constructor - ) TestSearchCommand=new Command<string>(TestSearch);

private void TestSearch(string obj)
{
System.Diagnostics.Debug.WriteLine(string.Format("Searchterm is {0}",obj));
}

Затем я набираю что-то втекстовое поле поиска и нажмите кнопку поиска, но obj появляется ноль.: - (

спасибо,
Дональд.

Ответы [ 2 ]

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

См. Ответ от @mshwf.Заменить 1-ю строку на 2-ю.

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

Вам необходимо установить привязку, потому что:

LookupBar.SearchCommandParameter=LookupBar.Text;

всегда будет отправлять null, поскольку это начальное значение LookupBar.Text при инициализации страницы.

Связывание в коде:

LookupBar.SetBinding(SearchBar.SearchCommandParameterProperty, binding: new Binding(source: LookupBar, path: "Text"));

Связывание в XAML:

<SearchBar Placeholder="Enter search term" x:Name="LookupBar" SearchCommand="{Binding TestSearchCommand}" 
           SearchCommandParameter="{Binding Source={x:Reference LookupBar}, Path=Text}"/>
...