MvxCommand使用CommandParameter绑定到字段

时间:2015-06-24 11:44:23

标签: android exception binding xamarin mvvmcross

我正在尝试将MvxCommandCommandParameter

一起使用
   <Mvx.MvxListView
   style="@style/MyList"
   local:MvxBind="ItemsSource Items;"
   local:MvxItemTemplate="@layout/itemfavorite" />

这是ViemModel中的财产:

    public List<Data> Items
    {
        get { return _items; }
        set
        {
            _items = value;
            RaisePropertyChanged(() => Items);
        }
    }

这是我的model

public class Data
{
   public int Id{get;set;}
   public string Name {get;set;}
   public ICommand Action {get;set;}
}

这是我的command(在数据中使用):

    public ICommand MyCommand
    {
        get
        {
            return new MvxCommand<int>(async (id) =>
            {
               .....
            }
    }

这是我的MvxItemTemplate:     ....      

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Start"
    android:layout_margin="10dp"
    local:MvxBind="Click Action,CommandParameter=Id"/>

如果我使用“CommandParameter=Id” - 我会得到unhandle异常。 “CommandParameter=1” - 这是工作。但我需要传递CommandParameter值字段ID。有可能吗?

1 个答案:

答案 0 :(得分:3)

CommandParameter 的值是静态值。遗憾的是,您无法使用属性名称作为命令参数传递。

你有一个例外,因为Mvx试图转换字符串&#34; Id&#34;进入 int

您可以在命令处理程序中使用它,而不是传递 Id

public ICommand MyCommand
{
    get
    {
        return new MvxCommand(async () =>
        {
           // use Id here
        }
    }
}