我只是想知道是否有任何示例将如何完成?
因此,我想做的是使用MVVCross实现搜索,而实际上现在不知道如何开始。正确方向的任何提示将不胜枚举。
值得的是,我的想法有点像这样...
我只有一个视图,那里有搜索栏。但是我不是在该视图中搜索数据。因此在搜索时,我想显示一个新的表格视图并进行搜索。
我已经为表格和控制器创建了一个单元格来显示它(只是通常的列表视图内容),但是现在仍然受搜索栏实现的限制。
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);
}
}
并列出视图:
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.
}
}
综上所述,我想要的是用户在主视图中的搜索栏中输入一些内容,以显示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);
}
}
然后鉴于其只是绑定它:
set.Bind (SearchBar).For (x=>x.Text).To (vm => vm.SearchTerm);
当然,该列表绑定到表源。这就是全部。