Sin*_*sag 1 uisearchbar ios mvvmcross xamarin
我只是想知道是否有任何例子可以做到这一点?
所以我想要做的是用MVVCross实现一个搜索,现在不知道如何开始.任何关于正确方向的提示都会受到极大的关注.
值得一提的是,我的想法有点像......
我有一个视图,我有搜索栏.但我不是在该视图中搜索数据.所以在搜索时,我想显示一个新的表视图并搜索它.
我为表和控制器创建了一个单元格来显示它(只是usuall list视图的东西),但我现在仍然坚持使用搜索栏实现.
public partial class HomeView : MvxViewController
{
public HomeView () : base ("HomeView", null)
{
}
public override void DidReceiveMemoryWarning ()
{
// Releases the view if it doesn't have a superview.
base.DidReceiveMemoryWarning ();
// Release any cached data, images, etc that aren't in use.
}
public override void ViewDidLoad ()
{
base.ViewDidLoad ();
if (RespondsToSelector(new MonoTouch.ObjCRuntime.Selector("edgesForExtendedLayout")))
EdgesForExtendedLayout = UIRectEdge.None;
RecommendedCollectionView.RegisterNibForCell(RecommededStationCollectionCell.Nib, RecommededStationCollectionCell.Key);
var source = new MvxCollectionViewSource(RecommendedCollectionView, RecommededStationCollectionCell.Key);
RecommendedCollectionView.Source = source;
var set = this.CreateBindingSet<HomeView, HomeViewModel>();
set.Bind(source).To(vm => vm.Genres);
set.Apply();
RecommendedCollectionView.ReloadData();
var gesture = new UITapGestureRecognizer (() => {
});
View.AddGestureRecognizer (gesture);
}
}
Run Code Online (Sandbox Code Playgroud)
并列表视图:
public class SearchView : UITableViewController
{
public SearchView () : base ("SearchView", null)
{
}
public override void DidReceiveMemoryWarning ()
{
// Releases the view if it doesn't have a superview.
base.DidReceiveMemoryWarning ();
// Release any cached data, images, etc that aren't in use.
}
public override void ViewDidLoad ()
{
base.ViewDidLoad ();
var source = new MvxSimpleTableViewSource (TableView, SearchTableCell.Key, SearchTableCell.Key);
TableView.Source = source;
TableView.RowHeight = 50;
var set = this.CreateBindingSet<SearchView, SearchViewModel> ();
set.Bind (source).To (vm => vm.Genres);
set.Apply ();
TableView.ReloadData ();
// Perform any additional setup after loading the view, typically from a nib.
}
}
Run Code Online (Sandbox Code Playgroud)
总而言之,我想要的是当用户在主视图中的搜索栏中输入内容时,显示searchView列表并搜索内部数据.
谢谢.
多谢你们.很抱歉我的视力很晚,所有这些答案都让我更好地了解MVVMCross.所以最后,我最终得到了这个解决方案.如果对这种方法有一些看法,如果有人能指出的话,我会很高兴.
所以在视图模型中,我有一个字符串属性,它绑定到searh文本.每当有文本更改时,我也会过滤列表.
所以视图模型看起来像这样:
private string _searchTerm;
public string SearchTerm
{
get { return _searchTerm; }
set {
_searchTerm = value;
if (String.IsNullOrEmpty(_searchTerm)) {
_genres = new List<Genre> ();
} else {
_genres = allGenres.Where (g => g.Name.ToLower ().Contains (_searchTerm.ToLower ())).ToList ();
}
RaisePropertyChanged (() => SearchTerm);
RaisePropertyChanged (() => Genres);
}
}
Run Code Online (Sandbox Code Playgroud)
然后在视图中它只是绑定它:
set.Bind (SearchBar).For (x=>x.Text).To (vm => vm.SearchTerm);
Run Code Online (Sandbox Code Playgroud)
当然,列表绑定到表源.这就是它的全部.
| 归档时间: |
|
| 查看次数: |
2339 次 |
| 最近记录: |