我有一个UIBarButtonItem
绑定到MvvmCross命令:
set.Bind(this.deleteItem).To(vm => vm.DeleteCommand).CommandParameter(this.deleteItem);
这在链接器关闭时工作正常。但是,如果我将其设置为仅链接SDK程序集,则绑定会中断并且永远不会被触发。它默默地失败,没有错误或记录警告。
删除CommandParameter并启用链接器确实有效:
set.Bind(this.deleteItem).To(vm => vm.DeleteCommand);
为什么在启用链接器时绑定会中断?我确保链接器包含UIBarButtonItem.Clicked
。
答案 0 :(得分:4)
想出来:链接器正在剥离ICommand的CanExecuteChanged
事件,该事件通过MvxWrappingCommand
中的反射使用。
修复是添加一个XML linker configuration file:
<assembly fullname="System">
<type fullname="System.Windows.Input.ICommand"></type>
</assembly>
奇怪的是,添加引用CanExecuteChanged
的LinkerPleaseInclude.cs文件似乎没有保留它,不确定原因。