Bis jetzt verwende ich die .xaml.cs, um die Eingaben zu verarbeiten.
Hier ist mein XAML-Kopfcode:
%Vor%Und hier ist ein Teil des MainWindow.xaml.cs-Codes:
%Vor%Wie kann ich dasselbe in MVVM implementieren? Denn soweit ich es verstehe, können wir keine Methode, nur Eigenschaften, binden, oder?
Die Eingabeverarbeitung ist ein View-Problem, nicht ein ViewModel-Problem. Warum sollten Sie das in ViewModel verschieben?
delegieren Sie stattdessen die Anwendungs- / Geschäftslogik an das ViewModel, während Sie die Tastatureingabe in der Ansicht:
beibehalten %Vor% Beachten Sie, wie ich die Eigenschaft PushToTalk
in das ViewModel verschoben habe, da dies wirklich Teil der Anwendungslogik und nicht der Benutzeroberfläche ist, während Tastaturereignisse auf der Ansichtsebene bleiben. MVVM wird dadurch nicht beschädigt, weil Sie nicht die UI- und Anwendungslogik mischen. Sie platzieren die Dinge nur dort, wo sie wirklich hingehören.
Scheint du hast deine Antwort, aber hier ist eine andere Lösung.
Sie können die Tastaturereignisse mit i:interaction
und InputBindings
angehen. Einige Beispiele, die ein DatePicker
mit Interaktion verwenden, wären:
(Beachten Sie, dass Sie die nächste Zeile in Ihren Fensterdefinitionen benötigen, damit i:Interaction
funktioniert:)
und für die Eingabebindung:
%Vor% Fühlen Sie sich frei, auf meine andere Antwort zu schauen, es behandelt i:interaction
und InputBindings
und Punkte im Gegenzug zu einem anderen Artikel über die Behandlung wichtiger Ereignisse: up / down on datepicker , und diskutiert den Code hinter / mvvm Ansätze.
Ich hoffe, Sie finden sie nützlich.
Das Folgende funktioniert für die Handhabung der "Enter" -Taste in einem TextBox:
%Vor%