C#Xamarin按钮ICommand或Click事件

时间:2016-01-09 10:49:20

标签: c# xamarin

我正在学习Xamarin,我找到了两个按钮选项:

  1. 命令
  2. 点击
  3. 什么是更好的使用时间?

    文档仅提供了Command的示例,但它没有解释为什么使用Command而不是Click。

    <Button Text="Back"
                    Command="{Binding DeleteCharCommand}"
                    Grid.Column="1"
                    BorderWidth="0" />
    

2 个答案:

答案 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提供了两个好处:

  1. 他们没有绑定到来电者。一个命令可以从不同的视图,类型等执行。而click事件处理程序位于一个非常特定的代码隐藏文件中。

  2. 命令提供基于window.location.hash方法启用/禁用UI的功能。

  3. 如果您不需要CanExecute功能,则可以轻松使用事件处理程序。 MVVM体系结构促进了命令的使用,因为您可以直接绑定到命令,从而防止代码隐藏。

    我个人只在可执行功能相关时才添加命令,因为必须设置所有命令属性会添加更多代码,而不仅仅是添加一些事件处理程序。

    使用CanExecute(也称为编译绑定)时,您也可以直接绑定到方法,因此您甚至不再拥有eventhandler。