android - MvxCommand 将 CommandParameter 绑定(bind)到字段

标签 android exception binding xamarin mvvmcross

我正在尝试将 fire 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);
        }
    }

这是我的模型:

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/

相关文章:

android - native cpp 中有很多 Unresolved 错误

java - 使用简单 XML 的 XML 反序列化错误

android - 在Android Studio中使用Gradle创建src文件夹的zip文件

c++ - 可以编写 catch() 以从一种对象类型转换为另一种对象类型吗?

javascript - 用 jQuery.on 替换 jQuery.bind

android - 工具栏不接触屏幕的两侧

.net - 单线程单元 - 无法实例化 ActiveX 控件

unit-testing - Unity 中的单元测试 - 获取 InvalidCastException - 为什么?以及如何解决?

objective-c - 使用绑定(bind)来实现 NSTableView 拖放重新排列?

javascript - Ember,观察者以奇怪的顺序触发