c#wpf禁用复选框取消选中 - 或+键入

时间:2017-01-23 10:06:20

标签: c# wpf checkbox

好吧我的问题很简单: 我有一个带有文本框的复选框:

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

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

如何禁用该按键事件或将其覆盖以无效?

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

但它没有帮助我,因为这些答案似乎都不适合我。

2 个答案:

答案 0 :(得分:0)

好的,我很抱歉实际上的答案对我有用:https://stackoverflow.com/a/37743639/6903474

但这个问题没有其他解决办法吗? Mabye更容易,我不需要创建一个新类并覆盖该方法?

答案 1 :(得分:0)

嗯..这是一种黑客行为,但我认为它应该有用。

首先,将CheckBox定义为ThreeState,并为不确定事件添加事件处理程序:

<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;
}