MvvmCross将命令绑定到<include>工具栏

时间:2016-04-07 08:24:18

标签: xamarin.android mvvmcross xamarin.forms

我想将命令绑定到我的工具栏&#39;项目。可能吗? 我试过了,但它仍然没有用https://stackoverflow.com/a/21936542/6160208

Toolbar.axml

<Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:local="http://schemas.android.com/apk/res-auto"
            android:background="@android:color/holo_blue_light"
            android:layout_width="match_parent"
            android:layout_height="85dp">

        <ImageButton
            android:src="@drawable/search"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/searchImageButton"
            android:layout_marginLeft="290dp"
            local:MvxBind="Click DoSearchCommand"
            android:background="@android:color/holo_blue_light" />

MainView.axml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:local="http://schemas.android.com/apk/res-auto"
          android:orientation="vertical"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent">
          <include
              layout="@layout/toolbar" />
</LinearLayout>

MainViewModel.cs

    private MvxCommand _searchCommand;
    public System.Windows.Input.ICommand SearchCommand
    {
        get
        {
            _searchCommand = _searchCommand ?? new MvxCommand(DoSearchCommand);
            return _searchCommand;
        }
    }
    private void DoSearchCommand()
    {
        ShowViewModel<SearchViewModel>();
    }

1 个答案:

答案 0 :(得分:1)

绑定到DoSearchCommand,但这是方法。你应该绑定到SearchCommand

local:MvxBind="Click SearchCommand"

作为改进,您也可以使用IMvxCommand而不是ICommand,并将ShowViewModel添加为lambda。

private MvxCommand _searchCommand;
    public IMvxCommand SearchCommand
    {
        get
        {
            _searchCommand = _searchCommand ?? new MvxCommand(() => ShowViewModel<SearchViewModel>());
            return _searchCommand;
        }
    }