C#WPF禁用复选框取消选中时 - 或+键入

问题描述:

好我的问题很简单: 我有这样的一个文本框复选框:C#WPF禁用复选框取消选中时 - 或+键入

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

现在我只想输入一个字符串“ - “符号在里面。但不幸的是,在wpf的标准复选框类中有一个KeyPress事件。我甚至不知道这个功能,但是如果你按下“ - ”,它将取消选择复选框,如果你按“+”,它会检查它。所以我不能在其中输入带“ - ”的字符串。但我需要这样做!

我该如何禁用该按键事件或重写它无能为力?

我发现了一个类似的问题在这里:How do I disable dash + equals on a check box object in xaml?

但它不帮我,没有造成这些问题的答案似乎为我工作。

好吧,我很抱歉,答案actualy为我所做的工作https://*.com/a/37743639/6903474

但是是有这个问题没有别的解决办法?马布什更容易的地方,我不必做一个新的课程,并重写该方法?

嗯..这是一种黑客,但我认为它应该工作。

首先,定义CheckBoxThreeState,并添加一个事件处理不确定的事件:

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

且事件处理程序将是这样的:

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