Laden...

WPF Button wird durch Leertaste immer wieder ausgelöst

Erstellt von Sindelfinger vor einem Jahr Letzter Beitrag vor einem Jahr 528 Views
S
Sindelfinger Themenstarter:in
39 Beiträge seit 2019
vor einem Jahr
WPF Button wird durch Leertaste immer wieder ausgelöst

Liebe Freunde,

ich steige derzeit tiefer in WPF und MVVM ein und bin jetzt auf ein Phänomen gestoßen, zu dem mich kein Google - Treffer schlauer machen konnte:

Ich habe ein Window mit 12 Buttons, die ich aber brav per Command-Binding mit Parametern an das ViewModel gebunden habe. Habe ich einen dieser Button gedrückt (und natürlich das Command ausgeführt), wird dieser Button immer wieder ausgelöst, wenn ich die Leertaste betätige.

Eine "IsFocussed" oder ähnliche Eigenschaft habe ich nicht gefunden, die ich dann über einen Converter auf False setzen könnte.

In diesem Window fange ich auch einige Tasten ab, um Hotkeys zum Scoring zur Verfügung zu haben. Das ganze soll die Windows Umsetzung des Dart - Spieles "SplitScore§ werden.

Danke schonmal im voraus

2 stupid 4 chess? No way.
2 stupid 4 C#? It seems so X(

T
2.224 Beiträge seit 2008
vor einem Jahr

Hat weniger mit WPF zu tun als viel mehr mit dem Windows Verhalten.
Das kannst du auch einfach mit dem Taschenrechner nachstellen.
Einfach eine Nummer drücken und dann wird durch Leertaste auch der letzte Button erneut ausgelöst.

Ansonsten finde ich bei Google mit "WPF remove button focus" ein paar Treffer.
Z.B. folgendes klinkt erstmal brauchbar.

https://zditect.com/blog/55249565.html

Vermutlich reicht es einfach Focusable auf false zu setzen, damit der Button nicht fokusiert wird.
Musst du mal prüfen.

Doku dazu:
UIElement.Focusable Eigenschaft (System.Windows)

Nachtrag:
Abfragen ob das Control gerade fokusiert ist, kannst du mit IsKeyboardFocused.

Doku dazu:
UIElement.IsKeyboardFocused Eigenschaft (System.Windows)

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

4.939 Beiträge seit 2008
vor einem Jahr

Hallo,

wie in Prevent space bar to make CheckEdit checked/unchecked vorgeschlagen, könntest du eine eigene von Button abgeleitete Klasse erzeugen und dessen OnPreviewKeyUp-Methode überschreiben.

T
2.224 Beiträge seit 2008
vor einem Jahr

@Th69
Wäre besser um ggf. weitere Keys abzufangen oder um zu steuern welche Keys auslösen dürfen und welche nicht.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

S
Sindelfinger Themenstarter:in
39 Beiträge seit 2019
vor einem Jahr

Vermutlich reicht es einfach Focusable auf false zu setzen, damit der Button nicht fokusiert wird.
Musst du mal prüfen.

Ja bin ich denn komplett mit Blindheit geschlagen? Diese Eigenschaft hab ich trotz stundelanger Sucherei nicht gefunden. Und genau diese hat den gewünschten Effekt erzielt.

Herzlichen Dank T-Virus und auch an alle anderen.

2 stupid 4 chess? No way.
2 stupid 4 C#? It seems so X(