Ich versuche, das MVVM-Muster zu verwenden, um eine WPF-Anwendung zu schreiben. Ich verwende das WPF-Datenraster (aus dem Toolkit), dem die Autofilterfunktion fehlt. Also ich möchte es implementieren. Ich habe der Spaltenüberschriftvorlage ein Kontextmenü hinzugefügt, das MenuItem heißt "Filter" und sollte eigentlich die Filtermethode aufrufen.WPF MVVM: Finden Sie heraus, auf welche Header Kontextmenü geklickt wurde
Also habe ich einen MenuItem-Befehl als den passenden DelegateCommand festgelegt, der an das ViewModel geht. Das Problem ist, dass ich die Information über die tatsächliche Spalte weitergeben muss, die mit der rechten Maustaste geklickt wurde! Wenn ich MVVM nicht verwenden würde, würde ich einen Event-Handler implementieren, der ein "sender" -Argument (das MenuItem) erhalten würde, dann würde ich sein Elternelement (das ContextMenu) finden, dann würde sein Elternteil mir die Spalte geben. Aber wie kann ich hier dasselbe erreichen? Wie kann ich den Absender an meinen Befehl übergeben? Kann dies mit ComandParameter geschehen?
Ich möchte wirklich nicht zusätzliche komplizierte Muster verwenden, um so eine einfache Aufgabe zu erreichen. Immerhin sollte MVVM die Entwicklung vereinfachen und nicht umgekehrt ...
Wie mache ich das? Etwas wie
Nur eine DataContext-Bindung macht den Trick –