我正在尝试将MvxCommand
与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
(在数据中使用):
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。有可能吗?
答案 0 :(得分:3)
CommandParameter 的值是静态值。遗憾的是,您无法使用属性名称作为命令参数传递。
你有一个例外,因为Mvx试图转换字符串&#34; Id&#34;进入 int 。
您可以在命令处理程序中使用它,而不是传递 Id 。
public ICommand MyCommand
{
get
{
return new MvxCommand(async () =>
{
// use Id here
}
}
}