2017-01-23 14 views
1

Okay, mein Problem ist einfach: Ich habe eine Checkbox mit einem Textfeld wie folgt aus:C# wpf deaktivieren Kontrollkästchen deaktivieren, wenn - oder + typisiert ist

<CheckBox> 
    <TextBox x:Name="FilterTextBox">Custom-Filter</TextBox> 
</CheckBox> 

Jetzt will ich mit einer Zeichenfolge eingeben nur ein " - "Symbol drin. Leider gibt es so etwas wie ein KeyPress-Ereignis in der Standard-Checkbox-Klasse von wpf. Ich wusste nicht einmal diese Funktion, aber wenn Sie "-" drücken, wird das Kontrollkästchen deaktiviert und wenn Sie "+" drücken, wird es überprüft. Also kann ich keine Zeichenfolge mit einem "-" darin eingeben. Aber ich muss das tun!

Wie kann ich das Tastendruckereignis deaktivieren oder überschreiben, um nichts zu tun?

Ich fand eine ähnliche Frage hier: How do I disable dash + equals on a check box object in xaml?

aber es tut mir geholfen, verursachen keine dieser Antworten für mich zu arbeiten scheint.

Antwort

0

Okay, ich bedaure diese Antwort tat actualy Arbeit für mich: https://stackoverflow.com/a/37743639/6903474

Aber gibt es keine andere Lösung für dieses Problem? Mabye etwas einfacher, wo ich keine neue Klasse machen und diese Methode überschreiben muss?

0

Nun .. das ist eine Art Hack, aber ich denke, es sollte funktionieren.

Zunächst einmal definieren die CheckBox als ThreeState, und einen Ereignishandler für das unbestimmte Ereignis hinzufügen:

<CheckBox IsThreeState="True" Indeterminate="CheckBox_Indeterminate"> 
    <TextBox x:Name="FilterTextBox">Custom-Filter</TextBox> 
</CheckBox> 

Und der Event-Handler so etwas wie dieses wäre:

private void CheckBox_Indeterminate(object sender, RoutedEventArgs e) 
{ 
    ((CheckBox)sender).IsChecked = false; 
} 
Verwandte Themen