如何从 Xamarin SearchBar 获取文本到视图模型
How to get text from Xamarin SearchBar into viewmodel
尝试从 Xamarin Forms SearchBar 获取文本到我的视图模型中,但遗漏了一些东西,不确定是什么。阅读了很多帖子后,我几乎就在那里,因为 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 为空。 :-(
谢谢,
唐纳德.
您需要设置绑定,因为:
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}"/>
查看@mshwf 的回答。将第一行替换为第二行。
尝试从 Xamarin Forms SearchBar 获取文本到我的视图模型中,但遗漏了一些东西,不确定是什么。阅读了很多帖子后,我几乎就在那里,因为 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 为空。 :-(
谢谢,
唐纳德.
您需要设置绑定,因为:
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}"/>
查看@mshwf 的回答。将第一行替换为第二行。