UIBarButtonItem GetEvents 在真实设备上返回 0 个项目



我在Xamarin.iOS项目上使用MVVM Light,我使用调用Type.GetEvent((的SetCommand将命令绑定到按钮。当我在模拟器上执行应用程序时,一切正常,但是当我在真实设备(iOS 10.3.3(上执行应用程序时,SetCommand方法失败,并显示消息:"找不到事件:单击已单击 参数名称:事件名称"。

这只发生在UIBarButtonItem上,UIButtons在使用SetCommand的两个环境中正确绑定到"TouchUpInside"。

我已经测试了_uiBarButton.GetType((。GetEvents(( 并在真实设备上返回一个空数组。

这里会发生什么?有人可以帮忙吗?

好吧,在创建自定义扩展方法作为解决方法之后:

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 扩展方法,并且在真实设备上一切正常,非常非常奇怪......

编辑

我找到了一篇很好的文章来解释这个问题:

解决未找到的事件

最新更新