Ich habe eine Listview-Vorlage und eine Spalte ist eine Schaltfläche. Ich brauche ein ausgewähltes Element, wenn ich auf diese Schaltfläche klicke. Wie kann ich das machen?
Um das ausgewählte ListView-Element innerhalb eines gedrückten Tastenereignisses zu cachen, können Sie das MVVM-Muster nutzen. In meiner ListView verbinde ich in der XAML die ItemsSource und SelectedItem zu einer ViewModel-Klasse. Ich binde auch meinen Button Command in der Vorlage an RunCommand im ViewModel.
Der schwierige Teil besteht darin, die Bindung von der Vorlage zum aktiven DataContext korrekt zu machen.
Sobald Sie dies getan haben, können Sie den SelectedCustomer innerhalb des RunCommand-Objekts erfassen Wird ausgeführt, wenn die Schaltfläche gedrückt wird.
Ich habe etwas Code hinzugefügt, um Ihnen den Einstieg zu erleichtern. Sie können Implementierungen von ViewModelBase und DelegateCommand über Google finden.
Hier ist der XAML:
%Vor%Hier ist das ViewModel:
%Vor%Hier verbinde ich das ViewModel mit der View:
%Vor%Beispiel mit einem regulären Klick-Ereignis im folgenden Code:
%Vor%Code dahinter:
%Vor%Hinweis: Obwohl ich MVVM sehr zu schätzen weiß, akzeptiere ich, dass es einen ziemlich steilen Anstieg von geringen Renditen gibt, sobald Sie Aktionen und Nachrichten zwischen dem Formular und der VM ausführen. Daher verwende ich es nur in komplexen Fällen Beziehungen zwischen VMs oder großen singulären VMs. Bei datenzentrischen Anwendungen im CRUD-Stil bevorzuge ich Aktionen und Nachrichtenrelais mit dem dahinter stehenden Code.