Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
WPF Button wird durch Leertaste immer wieder ausgelöst
Sindelfinger
myCSharp.de - Member



Dabei seit:
Beiträge: 31
Herkunft: Deutschland

Themenstarter:

WPF Button wird durch Leertaste immer wieder ausgelöst

beantworten | zitieren | melden

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(
private Nachricht | Beiträge des Benutzers
T-Virus
myCSharp.de - Experte



Dabei seit:
Beiträge: 2.067
Herkunft: Nordhausen, Nörten-Hardenberg

beantworten | zitieren | melden

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
Dieser Beitrag wurde 3 mal editiert, zum letzten Mal von T-Virus am .
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.
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 4.504

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
T-Virus
myCSharp.de - Experte



Dabei seit:
Beiträge: 2.067
Herkunft: Nordhausen, Nörten-Hardenberg

beantworten | zitieren | melden

@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.
private Nachricht | Beiträge des Benutzers
Sindelfinger
myCSharp.de - Member



Dabei seit:
Beiträge: 31
Herkunft: Deutschland

Themenstarter:

beantworten | zitieren | melden

Zitat von T-Virus
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.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Sindelfinger am .
2 stupid 4 chess? No way.
2 stupid 4 C#? It seems so X(
private Nachricht | Beiträge des Benutzers