如何将文本从Xamarin SearchBar导入视图模型

时间:2019-03-21 09:07:51

标签: c# xamarin.forms viewmodel searchbar commandparameter

试图将文本从Xamarin Forms SearchBar导入到我的视图模型中,但缺少了一些内容,不确定是什么。阅读了很多文章后,我快到了,因为intellisense会使用obj作为参数自动为我生成方法,但是当我使用它时,它为null,因此仍然缺少某些地方。这是相关的代码行(因此,如果您没有看到任何内容,请假设这是我所缺少的并告诉我:-))...

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变为null。 :-(

谢谢,
  唐纳德。

2 个答案:

答案 0 :(得分:0)

您需要设置绑定,因为:

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}"/>

答案 1 :(得分:0)

请参阅@mshwf的答案。将第一行替换为第二行。