WPF-UI-Ereignisse (z. B. SelectionChanged) an ViewModel-Befehle in MVVM binden
Das MVVM-Muster befürwortet die Trennung der UI-Logik von der Datenschicht. Aus diesem Grund ist es wichtig, UI-Ereignisse im ViewModel zu verarbeiten. Im bereitgestellten Codebeispiel wird das SelectionChanged-Ereignis im CodeBehind behandelt. Lassen Sie uns untersuchen, wie Sie dieses Ereignis in das ViewModel verschieben.
UI-Ereignisse an Befehle binden
WPF bietet eine leistungsstarke Funktion namens Datenbindung. Es ermöglicht Ihnen, UI-Elemente an Eigenschaften oder Befehle im ViewModel zu binden. In diesem Beispiel binden wir das SelectionChanged-Ereignis der Kontakteliste an einen Befehl im ViewModel.
Verwenden Sie EventTriggers und InvokeCommandAction
Dazu können Sie EventTrigger und InvokeCommandAction aus dem Windows.Interactivity-Namespace verwenden. Ein Beispiel ist wie folgt:
<code class="language-xml"><ListBox ...> <i:Interaction.Triggers> <i:EventTrigger EventName="SelectionChanged"> <i:InvokeCommandAction Command="{Binding SelectedItemChangedCommand}" /> </i:EventTrigger> </i:Interaction.Triggers> </ListBox></code>
Referenzen 'i'-Namespace
Um EventTrigger und InvokeCommandAction zu verwenden, müssen Sie auf die System.Windows.Interactivity-Assembly verweisen. Öffnen Sie das Referenzfenster des Projekts und navigieren Sie zu Referenz hinzufügen > Befehl an ViewModel binden
Erstellen Sie im ViewModel einen öffentlichen Befehl zur Behandlung des Ereignisses:
Binden Sie den Befehl an den DataContext des Fensters:
<code class="language-csharp">public ICommand SelectedItemChangedCommand { get; }</code>
Verarbeitung des SelectedItemChanged-Ereignisses
<code class="language-csharp">this.DataContext = new MyAppViewModel();</code>
Implementieren Sie in MyAppViewModel den SelectedItemChangedCommand und führen Sie die erforderliche Logik aus, z. B. das Abrufen und Gruppieren von Tags, genau wie im ursprünglichen Ereignishandler. Durch das Befolgen dieser Schritte haben Sie die SelectionChanged-Ereignisbehandlung erfolgreich in das ViewModel verschoben und somit den MVVM-Prinzipien gefolgt und die UI-Logik von der Datenschicht getrennt.
Das obige ist der detaillierte Inhalt vonWie binde ich WPF-UI-Ereignisse (wie SelectionChanged) an ViewModel-Befehle in MVVM?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!