/ / Was ist mit leeren Code-Behinds? - wpf, mvvm, Code-Behind

Was ist mit leeren Code-Behinds? - wpf, mvvm, code-behind

Ich verstehe den Nutzen von Unit-Tests vondas Ansichtsmodell dem Code-Behind vorziehen. Ich kann jedoch die Besessenheit nicht verstehen, völlig leere Code-Behinds zu erreichen. Zur Kompilierungszeit werden der Code dahinter und die XAML kombiniert, sodass sie tatsächlich dasselbe sind. Ich liebe XAML aufgrund seiner deklarativen Natur, die sehr cool ist. Aber gibt es tatsächlich einen praktischen Grund, darauf zu bestehen, dass der gesamte ansichtsbezogene Code XAML und nicht C # ist?

Antworten:

4 für die Antwort № 1

Es gibt auch einige Vorteile bei der Nutzungvon dem, was Blend zur Entwurfszeit mit XAML machen kann, aber das ist im Code-Behind-Argument eigentlich eher ein XAML-vs.-Argument (derselbe Code) "Wir haben darauf hingewiesen, dass Code in Klassen wie ViewModels verschoben werden soll, die getestet und wiederverwendet werden können. Wie bei vielen Dingen wird dies oft auf das Äußerste getrieben, und die Leute bestehen darauf, dass es niemals ein Code-Behind gibt, wenn es wirklich notwendig ist, kein Code-Behind zu haben Geschäftslogik in Code-Behind, ignoriert, dass es auch oft gibt UI-Logik auch.

XAML ist sehr umfangreich und ermöglicht es Ihnen, viel zu tundeklarativ, aber es gibt immer noch UI-spezifische Dinge (z. B. Event-Handler, einige Animationsbehandlungen), die nicht ohne die Verwendung von Code ausgeführt werden können. Sie können diesen Code normalerweise an eine andere Stelle als den Code-Behind verschieben, indem Sie Dinge wie custom verwenden Steuerelemente, angehängte Eigenschaften usw., aber wenn Sie keine Wiederverwendungsvorteile erhalten, ist es wahrscheinlich besser, den Code-Behind zu verwenden, um stattdessen diese UI-Logik auszuführen.

Muster wie MVVM sind allgemeine Leitprinzipien, keine strengen Regeln, die zwangsweise eingehalten werden müssen - diese werden als Programmiersprachen bezeichnet. :)


1 für die Antwort № 2

Aus gutem Grund ist es das Ziel von Microsoft, mit WPF und XAML Grafik- und Codierungsjobs getrennt zu halten. Auf diese Weise können Entwickler und UI-Designer problemlos arbeiten.


1 für die Antwort № 3

Es geht nur um Testbarkeit. Es ist schwierig (fast unmöglich), Ihren Code dahinter zu testen. Mit MVVM können Sie Testgurte erstellen, mit denen Sie Ihr Modell und ViewModel vollständig testen können.

Davon abgesehen bin ich ein Fan von Pragmatik. Einige UI-Events sind ein Bär, den man mithilfe von Befehlen einrichten kann, und für diese lasse ich mich manchmal in den Code ein.


0 für die Antwort № 4

Das Ansichtsmodell ist das Code-Behind für das XAML. Zumindest denke ich das so. Und es ist eine Code-Behind-Datei, die ohne XAML getestet werden kann.

Auf der anderen Seite hat, wie Ben Johnson vielleicht gesagt hat, niemand außer einem Dummkopf jemals Drag & Drop im Ansichtsmodell implementiert.