Laden...

KeyBindings WPF - MVVM Pattern

Erstellt von Sebastian1989101 vor 13 Jahren Letzter Beitrag vor 13 Jahren 3.568 Views
Sebastian1989101 Themenstarter:in
241 Beiträge seit 2010
vor 13 Jahren
KeyBindings WPF - MVVM Pattern

Hallo Community und frohes fest,

trotz der Weihnachtlichen Umstände habe ich dennoch eine Frage zu WPF und MVVM. Und zwar Versuche ich grade KeyBindings auf meine Menü Elemente zu setzen.

Folgendes habe ich schon versucht:


<Window.InputBindings>
    <KeyBinding Key="N" Modifiers="Ctrl" Command="{Binding NewCommand}" />
</Window.InputBindings>

in den so ebend genannten Fall lässt die DependencyObject Exception grüßen 😃
Darauf hin hab ich folgendes Probiert:


KeyBinding key = new KeyBinding(NewCommand, Key.N, ModifierKeys.Control);

allerdings wohin mit 'key'? So bleibt es ja Funktionslos. Ohne MVVM habe ich es bei einem älteren Projekt 'InputBindings' hinzugefügt -> Dies wird jetzt irgendwie als Klasse ohne Add erkannt?

Vielleicht mag meine Frage relativ noobig sein, dennoch finde ich aktuell die Lösung nicht dazu. Wäre für jede Hilfe sehr dankbar, am liebsten wäre mir natürlich eine kurze knappe Lösung fg

Gruß,
Sebastian

WAGO Kontakttechnik GmbH & Co. KG / Software Notion
Softwareentwicklung

C# .NET with WPF, ASP, Xamarin and Unity
Personal Blog: Development Blog

1.044 Beiträge seit 2008
vor 13 Jahren

Hallo Sebastian1989101,

verwende ein MVVM-Framework. So ist das nicht möglich.

zero_x

Sebastian1989101 Themenstarter:in
241 Beiträge seit 2010
vor 13 Jahren

Das muss doch auch anders zu lösen sein, ich will nicht extra für die Shortcuts nen ganzes Framework mit Referenzieren. 😉

WAGO Kontakttechnik GmbH & Co. KG / Software Notion
Softwareentwicklung

C# .NET with WPF, ASP, Xamarin and Unity
Personal Blog: Development Blog

Sebastian1989101 Themenstarter:in
241 Beiträge seit 2010
vor 13 Jahren

Keiner sonst mehr ne Lösung parat? Sonst gibt es doch auch immer mehrere Wege ein Problem zu lösen.

WAGO Kontakttechnik GmbH & Co. KG / Software Notion
Softwareentwicklung

C# .NET with WPF, ASP, Xamarin and Unity
Personal Blog: Development Blog

Sebastian1989101 Themenstarter:in
241 Beiträge seit 2010
vor 13 Jahren

Topic kann als gelöst markiert werden. Habs über einer statischen Property gelöst, zwar unschön aber wenigsten Funktioniert es erstmal. Für Optimalere Lösungen bin ich jedoch jederzeit offen.

WAGO Kontakttechnik GmbH & Co. KG / Software Notion
Softwareentwicklung

C# .NET with WPF, ASP, Xamarin and Unity
Personal Blog: Development Blog

U
1.578 Beiträge seit 2009
vor 13 Jahren

In einer MVVM Umgebung arbeitet man sehr oft mit so genannten DelegateCommand objekten, manchmal auch RelayCommand genannt.
Meine Implementation davon findest du hier: GitHub: DelegateCommand.cs (Ist, glaub ich, die selbe Implementation wie in den MS MVVM Tutorial)
Demo code: My Libraries: DelegateCommand
In dem Beispiel kannst du davon ausgehen das du ein KeyBinding gegen den SetCurrentCustomer gebunden hast.

Diese oder so eine ähnliche Klasse brauchst du in deinem Projekt, dann kannst du im ViewModel ein ICommand erstellen und das KeyBinding dagegen binden.
(Das Binden der InputBindings gegen ein ICommand im ViewModel geht erst ab .Net 4.0)

Dem ViewModel ist es am ende egal ob der Command von einem MenuItem, Button oder InputBinding angetriggert wurde.