如何将Xamarin SearchBar中的文本导入viewmodel

问题描述 投票:0回答:2

试图将Xamarin Forms SearchBar中的文本放入我的viewmodel中,并丢失一些东西,不知道是什么。阅读了很多帖子后,我几乎就在那里,因为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会出现空值。 :-(

谢谢, 唐纳德。

c# xamarin.forms viewmodel searchbar commandparameter
2个回答
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}"/>

0
投票

请参阅@mshwf的回答。将第1行替换为第2行。

© www.soinside.com 2019 - 2024. All rights reserved.