public override void OnCreateOptionsMenu(IMenu menu, MenuInflater inflater)
{
    // The view pager sets this hint (through our parent fragment) so we need
    // to figure out if the menu items are visible or not.
    if (!UserVisibleHint)
        return;

    base.OnCreateOptionsMenu(menu, inflater);

    inflater.Inflate(Resource.Menu.ListMenu, menu);

    var searchMenu = menu.FindItem(Resource.Id.action_search);

    this._searchView = MenuItemCompat.GetActionView(searchMenu).JavaCast<SearchView>();
    this._searchView.QueryHint = "Search for assets.";
    this._searchView.LayoutParameters = new ActionBar.LayoutParams(GravityFlags.Right);

    this._searchView.QueryTextChange += (s, e) => { ViewModel.Constraint = e.NewText; };

    this._searchView.QueryTextSubmit += (s, e) => { e.Handled = true; };

    MenuItemCompat.SetOnActionExpandListener(searchMenu, new SearchViewExpandListener(this._adapter));
}

public string SearchTerm
{
    get { return ViewModel.Constraint; /* just to make the compiler happy */ }
    set
    {
        // Do not use string variant.
        // See: https://bugzilla.xamarin.com/show_bug.cgi?id=25995
        this._adapter.Filter.InvokeFilter(new Java.Lang.String(ViewModel.Constraint));
    }
}