如何将多个参数传递给MvxCommand
?例如:
private MvxCommand<int> _addNumbers;
public ICommand AddNumbers
{
get
{
_addNumbers = _addNumbers ?? new MvxCommand<int>(this.OnAddNumbers);
return _addNumbers;
}
}
此命令仅需1 int
。我需要它拿2。
此外,命令可以返回值吗?
答案 0 :(得分:3)
我认为您最好的选择是使用Tuple
将两个参数转换为单个对象。
MvxCommand<Tuple<int, int>> _addNumbers;
public IMvxCommand AddNumbers
{
get
{
return _addNumbers = _addNumbers ?? new MvxCommand<Tuple<int, int>>(OnAddNumbers);
}
}
编辑:至于你的第二个问题:
此外,命令可以返回值吗?
MvxCommand
是一种类型,而不是一种方法。它不会直接返回任何东西。在您的公开get
属性上执行MvxCommand
期间,您可以调用一个单独的方法来返回某些内容,或者在Action
内{{1}在你的情况下)你返回。
答案 1 :(得分:1)
我建议使用以下灵活的解决方案:创建DTO类来存储参数,序列化它并传递序列化对象 - 您只需要使用string
参数的命令。以下是示例:
`
public class DTO
{
int number1;
int number2;
}
private MvxCommand<string> _addNumbers;
public ICommand AddNumbers
{
get
{
_addNumbers = _addNumbers ?? new MvxCommand<string>(() =>
{
_addNumber = JsonConvert.SerializeObject(new DTO() { number1 = 1, number2 = 2});
});
return _addNumbers;
}
}`
并将其反序列化:
JsonConver.DeserializeObject<DTO>(youSerializedDTO);