在 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
只会被调用一次。
我正在使用 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
只会被调用一次。