Search code examples
c#xamlwin-universal-appuwpwindows-10-universal

Difference between Command (ICommand) and Click event


When should I use the Command and when to use the Click event?

F.e. if I have a Button in my UWP app what should I use?


Solution

  • When should I use the Command and when to use the Click event?

    Yours is a broad question and I would simply answer with: "It depends". Because:

    • The Command implements the ICommand interface and this means more code to add to your application but usually this won't change. Instead, the event handler doesn't require any interface implementation.
    • For every command you want, you have to provide the code that will handle the click and the CanExecute logic, to say when the command can execute. This is not required in a simple event handler (like MyButton_Click). This means that, using a Command, you will have more control over the elements of your UI (the button won't execute anything if CanExecute is false).
    • When you want to add a Command, you will bind it to your DataContext (the ViewModel, if you implement the MVVM pattern). Instead, when you add a simple event handler (like MyButton_Click), the code will be placed in your code-behind that is the logic behind your main window. In my opinion, this is best, as you'll have everything you need to modify in just one place (the ViewModel) instead of logic scattered everywhere in your project.

    At the end of the day, it's up to you to use whatever suits you best, considering also the requirements you have been given (like: "Don't use event handlers" or "The Command is too advanced, let's just use something simple", etc.) and/or other constraints in your project.