我在Xamarin.iOS项目中使用MVVM Light,我使用调用Type.GetEvent()的SetCommand将命令绑定到按钮。当我在模拟器上执行应用程序时一切正常,但是当我在真实设备(iOS 10.3.3)上执行应用程序时,SetCommand方法失败并显示消息:“未找到事件:单击” 参数名称:eventName“。
这只发生在UIBarButtonItem上,使用SetCommand在两个环境中将UIButtons正确绑定到“TouchUpInside”。
我测试了_uiBarButton.GetType()。GetEvents()并在真实设备上返回一个空数组。
这里可以发生什么?有人可以帮忙吗?
答案 0 :(得分:1)
好吧,在创建自定义扩展方法后,作为一种解决方法:
public static void SetBarButtonCommand(this UIBarButtonItem button, ICommand command)
{
SetBarButtonCommand(button, string.Empty, command);
}
public static void SetBarButtonCommand(this UIBarButtonItem button, string eventName, ICommand command)
{
button.Clicked += (s, args) =>
{
if (command.CanExecute(null))
{
command.Execute(null);
}
};
button.Enabled = command.CanExecute(null);
command.CanExecuteChanged += (s, args) =>
{
button.Enabled = command.CanExecute(null);
};
}
问题已经消失!!这很奇怪,因为我在尝试之前已经多次清理并重新编译了该项目,但现在我再次使用默认的MVVM Light SetCommand扩展方法,所有这些都在真实设备上工作正常,非常奇怪......
我找到了一篇解释这个问题的好文章: