2016-09-18 2 views
4

Wann sollte ich das Command verwenden und wann das Ereignis Click verwenden?Unterschied zwischen Befehl (ICommand) und Click-Ereignis

F.e. wenn ich eine Button in meiner UWP App habe, was soll ich verwenden?

+3

Befehl mit Ihrem Viewmodel binded, während Click-Ereignis im Code hinter –

+5

Der andere Bonus mit dem Befehl geschrieben wird, ist, dass es um die Aktion auszuführen, die Taste los, wenn es nicht möglich graut CanExecute so Ihre UI können. Für die beste Vorgehensweise sollten Sie die ICommand-Schnittstelle verwenden, die Ihren Code auf lange Sicht sauberer und einfacher zu pflegen macht, aber wenn Sie nur eine Schaltfläche für eine einfache Anwendung haben, gibt es kein echtes Problem, wenn Sie nur das Klickereignis verwenden. – mbrdev

+2

Ein weiterer Vorteil von Command besteht darin, dass derselbe Befehl an mehr als ein UI-Element gebunden werden kann (z. B. können Sie denselben Befehl an einen Menüeintrag und eine Symbolleistenschaltfläche binden). – Joe

Antwort

7

Wann sollte ich den Befehl verwenden und wann das Click-Ereignis verwenden?

Yours ist eine weit gefasste Frage, und ich würde einfach beantworten mit: „Es hängt“. Denn:

  • Die Command implementiert die ICommand Schnittstelle und das bedeutet mehr Code zu Ihrer Anwendung hinzufügen, aber in der Regel wird dies nicht ändern. Stattdessen benötigt der Event-Handler keine Schnittstellenimplementierung.
  • Für jeden Befehl, den Sie wollen, müssen Sie den Code, der den Klick und die CanExecute Logik behandelt, sagen, wann der Befehl ausgeführt werden kann. Dies wird nicht in einem einfachen Event-Handler angefordert (wie MyButton_Click). Dies bedeutet, dass Sie mit einer Command mehr Kontrolle über die Elemente Ihrer Benutzeroberfläche haben (die Schaltfläche führt nichts aus, wenn CanExecutefalse ist).
  • Wenn Sie eine Command hinzufügen möchten, werden Sie binden Sie es an Ihre Datacontext (die Ansichtsmodell, wenn Sie das MVVM Muster implementieren). Wenn Sie stattdessen einen einfachen Ereignishandler hinzufügen (z. B. MyButton_Click), wird der Code in Ihrem Code-Behind abgelegt, der die Logik hinter Ihrem Hauptfenster darstellt. Dies bedeutet, dass die Umsetzung einer Command, nach mir, Sie haben alles, was Sie brauchen, um nur an einer Stelle (ViewModel) anstelle von verstreuten Logik irgendwo in Ihrem Projekt zu ändern.

Natürlich können Sie verwenden, was Sie wollen und meine Punkte gibt es nur einen Einblick über die verschiedenen Implementierungen zu geben und Sie haben zu prüfen, welche Lösung für Sie geeignet ist, auch unter Berücksichtigung der Anforderungen, die Sie haben wurde (wie: "Verwenden Sie keine Event-Handler" oder "Der Befehl ist zu weit fortgeschritten, lassen Sie uns einfach etwas einfach verwenden", etc.) und/oder andere Einschränkungen in Ihrem Projekt.

+1

nette Antwort in einfachen Worten –