使用参数

时间:2015-08-03 06:59:26

标签: c# android xamarin mvvmcross

在Xamarin Studio的MVVM Cross for Android中,

我可以在我的.axml文件中写这个来将点击功能绑定到按钮:

local:MvxBind="Click SendMessage"  

SendMessage是带有签名

的MvxViewModel上的公共方法
public void SendMessage() 
{
//do stuff
}


但是,我想做类似的事情,

local:MvxBind="Click SendMessage param1: foo, param2: bar"

应该用这样的签名调用下面的方法,

public void SendMessage(T foo, T bar) 
{
//do stuff
}

其中foo和bar可能是当前选定的项目,或者是表格的特定行中表示的对象等。

我无法看到指向如何执行此操作的任何地方,我希望它是本机功能!有人可以帮忙吗?

3 个答案:

答案 0 :(得分:1)

绑定引擎允许您使用stationListArray[i]实例或NSMutableDictionary * tempDict = [[stationArray objectAtIndex:i]mutableCopy];//Create a mutable copy of the `NSDictionary` that is inside the `NSArray` [[tempDict setObject:ordinalString forKey:@"Ordinal"]; //In this line you are adding the Ordinal `NSString` in to the tempDict `NSMutableDictionary` so now you have the desired `NSMutableDictionary`. You can change the key to whatever you wish. [stationArray replaceObjectAtIndex:i withObject:[tempDict copy]];//Swap the original(old NSDictionary) with the new updated `NSMutableDictionary` I used the copy method in order to replace it with the IMMUTABLE `NSDictionary` 方法。后者仅在您安装NuGet package MethodBinding时才有效。

对于支持的参数量,它归结为单个参数,该参数应对应于绑定到ListView中项目的ICommand

答案 1 :(得分:1)

您可以使用ICommand而不是void来执行代码,在这里您可以设置一个参数。

另一个选项是将对象所需的参数绑定到代码中并访问这些对象。

答案 2 :(得分:0)

对于xamarin工作室的确切功能有点文盲,我想建议一个不同的方法:

如果让View上的控件在选中时设置了一个类范围属性SelectedItem,那么在点击它时可以通过buttons方法访问它?