2015-06-24 27 views
2

我用火MvxCommand試圖與CommandParameterMvxCommand隨着CommandParameter結合現場

<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(使用in數據):

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」 - 我得到的未經處理過的異常。 「CommandParameter=1」 - 這是工作。但我需要通過CommandParameter值字段Id。可能嗎?

回答

2

CommandParameter的值是一個靜態值。不幸的是,您不能使用屬性的名稱作爲命令參數傳遞。

你有一個例外,因爲MVX嘗試將「ID」轉換成INT

而不是通過Id,你可以簡單地在你的命令處理程序中使用它。

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