如何在xaml中的复选框对象上禁用dash + equals?

我有一个datatemplate xaml,目前在报告屏幕上看起来像这样

            

我想知道,我如何禁用使用’ – ‘和’=’作为chek并取消选中的默认复选框行为。

我想允许该文本框中的用户为页面范围键入“1-5,6,7”,但不能这样做,因为’ – ‘正在检查并取消选中该框

编辑:我想保持空格键function检查+取消选中复选框。 无论出于何种原因,如果我在文本框中并输入空格,则不会触发切换事件,但是’ – ‘和’=’会触发。

EDIT2:理想情况下寻找xaml修复程序,因为我正在尝试维护MVVM体系结构,并且不希望隐藏代码

CheckBox.OnKeyDown是罪魁祸首(请参阅http://msdn.microsoft.com/en-us/library/system.windows.controls.checkbox.onkeydown.aspx )。 我通过创建一个覆盖OnKeyDown并且什么都不做的自定义CheckBox类来解决这个问题。 VB解决方案看起来像:

 Public Class IgnoreKeyboardCheckBox Inherits CheckBox Protected Overrides Sub OnKeyDown(e As System.Windows.Input.KeyEventArgs) If e.Key = Key.Space Then MyBase.OnKeyDown(e) End If End Sub End Class 

只要您需要复选框忽略键盘输入,就可以使用此类而不是CheckBox。

在这里可以看到CheckBox.cs在C#.NET中的源代码 ,对于2状态复选框, Key.Add, Key.Subtract, Key.OemPlus, Key.OemMinus有自定义行为。

(以编程方式)添加命令对我不起作用。 覆盖子类做了:

 protected override void OnKeyDown(KeyEventArgs e) { // Non ThreeState Checkboxes natively handle certain keys. if (SuppressNativeKeyDownBehaviour(e.Key)) return; base.OnKeyDown(e); } private bool SuppressNativeKeyDownBehaviour(Key key) { switch (key) { case Key.Add: case Key.Subtract: case Key.OemPlus: case Key.OemMinus: return true; default: return false; } } 

尝试使用空命令覆盖键盘快捷键:

    

并在您的viewmodel中:

//使用System.windows.input

 public Icommand EmptyCommand = ApplicationCommands.NotACommand;