Laden...

WPF Button wird durch Leertaste immer wieder ausgelöst

Letzter Beitrag vor 2 Jahren 5 Posts 637 Views
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(

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.

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.

@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.

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(