我正在学习Xamarin,我找到了两个按钮选项:
什么是更好的使用时间?
文档仅提供了Command的示例,但它没有解释为什么使用Command而不是Click。
<Button Text="Back"
Command="{Binding DeleteCharCommand}"
Grid.Column="1"
BorderWidth="0" />
答案 0 :(得分:3)
Command接口优于Click,因为如果在ViewModel中注册Click处理程序,那么它将成为绑定并依赖于该View,这完全违反了Model-View-ViewModel (MVVM) architectural pattern
MVVM模式的整体理念是你的View与任何东西分离(通常人们会提到UX设计师可能正在开发视图的布局,而开发人员正在研究&#34;后端&#34;互不干扰。)见:Separation of Concerns
所以基本上,它被认为是为控件创建Click事件的不良做法,但是(我个人使用XAML的经验)没有什么可以阻止你这样做。请记住,它的设计很糟糕,你应该使用命令。
Xamarin文档here
中有一个很好的解释答案 1 :(得分:2)
命令比单击EventHandlers提供了两个好处:
他们没有绑定到来电者。一个命令可以从不同的视图,类型等执行。而click事件处理程序位于一个非常特定的代码隐藏文件中。
命令提供基于window.location.hash
方法启用/禁用UI的功能。
如果您不需要CanExecute
功能,则可以轻松使用事件处理程序。
MVVM体系结构促进了命令的使用,因为您可以直接绑定到命令,从而防止代码隐藏。
我个人只在可执行功能相关时才添加命令,因为必须设置所有命令属性会添加更多代码,而不仅仅是添加一些事件处理程序。
使用CanExecute
(也称为编译绑定)时,您也可以直接绑定到方法,因此您甚至不再拥有eventhandler。