我只是想知道是否有任何示例将如何完成?

因此,我想做的是使用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);

当然,该列表绑定到表源。这就是全部。

10-07 19:49
查看更多