2010-11-21 6 views
9

RoutedCommand und RoutedUICommand haben viel zu bieten. Es gibt eine eingebaute Unterstützung für Text und Tastaturgesten. Sie können eine Auflistung von RoutedUICommands an die ItemsSource eines Menüs binden und automatisch Menüelemente für Sie erstellen und binden. Einige Befehle (Ausschneiden, Kopieren, Einfügen) werden automatisch von vordefinierten Steuerelementen unterstützt.Alle MVVM-Frameworks, die mit RoutedCommand gut funktionieren?

Immer wenn ich MVVM benutze, habe ich festgestellt, Routing-Befehle zu einer schlechten Passform, wegen der wiederholenden Boilerplatte XAML und Codebehind muss ich für jeden schreiben. Wenn ich MVVM mache, habe ich normalerweise RelayCommand anstelle von gerouteten Befehlen aufgezogen. Dies ist in einigen Fällen eine angemessene Problemumgehung, hat aber Nachteile - beispielsweise werden Tastengesten zu much more complicated.

Aber nachdem ich Rob Eisenbergs "Build your own MVVM Framework" Sitzung beobachtet habe, bin ich nicht mehr zufrieden mit Relay-Kommandos und deren Unzulänglichkeiten. Das einzige Problem mit gerouteten Befehlen war der repetitive Boilerplate-Code, und sobald Sie diesen repetitiven Code in ein Framework einbeziehen und Konventionen anwenden, scheint es keinen Grund mehr zu geben, keine gerouteten Befehle in MVVM zu verwenden.

Technisch sieht es so aus, als wäre es nicht schwer. Das Framework sollte nur an die Ereignisse und Executed der Ansicht gebunden sein und Konventionen anwenden, um nach Methoden und Eigenschaften im ViewModel zu suchen. Wenn beispielsweise der Befehl Ausschneiden ausgeführt wird, suchen Sie nach einer ExecuteCut-Methode (und CanExecuteCut-Eigenschaft) das ViewModel. Ich könnte mein eigenes MVVM-Framework erstellen, das dies einfach macht.

Aber meine Frage ist, gibt es bereits MVVM-Frameworks, die mit RoutedCommand arbeiten? Das einzige MVVM-Framework, das mir in jeder Tiefe vertraut ist, ist Caliburn.Micro, und es unterstützt derzeit keine weitergeleiteten Befehle auf diese Weise (was mich überrascht, da es seine eigene Art von Aktionsbubbling unterstützt).

Antwort

1

Wenn ich mich richtig erinnere, hat Sacha Barber etwas in diese Richtung getan, ich glaube, Sie könnten einen Blick here.

+1

Ihre Website sagt nichts über Routingereignisse aus. Ich habe einen kurzen Blick durch den Quellcode geworfen, aber es sieht nicht so aus, als ob dort irgendetwas relevant wäre. –

2

mit viel Forschungsmarathon in SO und anderen Seiten, fand keinen geeigneten Rahmen zu SPIELEN mit RoutedCommand.

aber einer der WPF-Schüler Josh Smith hat eine nette Lösung der Verwendung von Routed Command mit MVVM implementiert.

können Sie überprüfen Using RoutedCommands with a ViewModel in WPF, die als sauber und leicht angegeben ist, RoutedCommands in MVVM-Architektur zu verwenden.

Verwandte Themen