首页 > 解决方案 > 无法从托管 Activity 将值传递给 MvxCommand

问题描述

我正在尝试将两个值传递给 MvxCommand,如下面的代码所示。第一个值是字符串类型,后者是枚举。但我收到以下错误:

    the non-generic type MvxCommand can’t be used with type arguments

请让我知道如何解决此错误。

代码

        //in View „Activity"
    ViewModel. DexCommand.Execute(result, value);

        //in ViewModel 
public IMvxCommand DexCommand => new MvxCommand<string, VRTEnum>((res, val) =>
    {

    });

标签: c#visual-studioxamarinicommand

解决方案


非泛型类型 MvxCommand 不能与类型参数一起使用

这是源代码片段:

namespace MvvmCross.Commands
   {
      public interface IMvxCommand : ICommand
        {
          void RaiseCanExecuteChanged();
          void Execute();
          bool CanExecute();
        }

      public interface IMvxCommand<T> : ICommand
        {
          [Obsolete("Use the strongly typed version of Execute instead", true)]
          new void Execute(object parameter);
          [Obsolete("Use the strongly typed version of CanExecute instead", true)]
          new bool CanExecute(object parameter);

          void RaiseCanExecuteChanged();

          void Execute(T parameter);

          bool CanExecute(T parameter);
        }
    }

可以看到IMvxCommand<T>参数是T

所以如果你想传递两个参数,我认为你可以使用 aTuple将它们变成一个对象。

例如

 new MvxCommand<Tuple<string, VRTEnum>>(Action);

推荐阅读