我正在尝试将 fire 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);
}
}
这是我的模型
:
public class Data
{
public int Id{get;set;}
public string Name {get;set;}
public ICommand Action {get;set;}
}
这是我的命令
(在数据中使用):
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。可能吗?
最佳答案
CommandParameter 的值是一个静态值。不幸的是,您不能使用属性名称作为命令参数传递。
您遇到异常,因为 Mvx 试图将字符串“Id”转换为int。
您可以简单地在命令处理程序中使用它,而不是传递Id。
public ICommand MyCommand
{
get
{
return new MvxCommand(async () =>
{
// use Id here
}
}
}
关于android - MvxCommand 将 CommandParameter 绑定(bind)到字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31025627/