使用MvxCommand与CommandParameter绑定

Eug*_*kov 10 binding command mvvm xamarin.android mvvmcross

我正在尝试使用带有CommandParameter的 fire MvxCommand,但遇到以下问题:MyView.axml包含:

<LinearLayout
    android:orientation="horizontal"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button1"
        local:MvxBind="Click MyCommand, CommandParameter=foo" />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button2"
        local:MvxBind="Click MyCommand, CommandParameter=bar" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

MyViewModel.cs:

public class MyViewModel : MvxViewModel
{
    public ICommand MyCommand { get; private set; }

    public MyViewModel()
    {                                    // param is null
      MyCommand = new MvxCommand<string>(param =>
      {
          if (param == "foo")               
          {
            // do something
          }
          else if (param == "bar")
          {
            // do something else
          }
      });
    }
}
Run Code Online (Sandbox Code Playgroud)

但是当我检查param变量为null时.

我做错了什么?

Stu*_*art 10

您的代码在我的源代码树头上为我工作.

但这个功能只有两周了.

我的猜测是,这个功能要么没有进入你正在使用的版本,要么就是它有一个bug.

你能检查一下这个绑定的调试跟踪吗?那里有信息吗?

  • 如果跟踪表明这CommandParameter是一个未知的符号,那么我的猜测是你需要自己构建最新的源代码 - 或者等待新的版本.
  • 如果跟踪建议其他内容,那么您可以在安装过程中修补问题.

我知道我们确实解决的一件事是一个价值转换器问题,其中的Cirrious.MvvmCross.Binding.dll基础ValueConverter不仅仅是通过重写Setup.ValueConverterAssemblies来注册ValueConverter所需的CommandParameter