C # - Umgang mit XAML-Tastatur in MVVM?

7

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?

    
Elfayer 06.12.2013, 16:11
quelle

3 Antworten

4

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.

    
Federico Berasategui 06.12.2013, 16:21
quelle
19

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:

%Vor%

(Beachten Sie, dass Sie die nächste Zeile in Ihren Fensterdefinitionen benötigen, damit i:Interaction funktioniert:)

%Vor%

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.

    
Noctis 06.12.2013 23:22
quelle
1

Das Folgende funktioniert für die Handhabung der "Enter" -Taste in einem TextBox:

%Vor%

    
SurfingSanta 09.06.2016 06:57
quelle

Tags und Links