在 Xamarin.iOS 上使用 Mvvm-Light 设置命令后,您可以断开命令吗

Can you disconnect a command after it has been set with Mvvm-Light on Xamarin.iOS

我正在使用 Mvvm-Light 创建一个绑定到带有 SetCommand 扩展名的 UIButton。我可以在 ViewDidLoad(...) 中调用它,但我想在 ViewWillAppear(...) 中连接它并在 ViewWillDisappear(...) 中断开它,就像我处理其余绑定一样。因此,所有绑定仅在视图可见时才处于活动状态。如果我现在这样做,那么每次我导航回视图时都会调用 SetCommand,并且会多次触发 RelayCommand,每次调用 SetCommand 都会触发一次。

这可能吗?如果不是,那为什么不呢?

Why do you want to disconnect a command?

如果一个UIViewController消失了,那么他的所有控件都不能被触摸和看到。所以命令只有在再次出现时才会触发,我想这已经符合你的要求了。

如果您确实想在 ViewWillDisappear() 事件中删除此命令,您可以使用:

button.RemoveTarget(null, null, UIControlEvent.AllEvents);

这将删除按钮拥有的所有事件。正如您所说,当您在 ViewWillAppear() 事件中再次 SetCommand() 时,RelayCommand 只会被调用一次。