Xaml 如何在DoubleUpDown中防止数字之间出现空格键?

Xaml 如何在DoubleUpDown中防止数字之间出现空格键?,xaml,mvvm,space,numeric,Xaml,Mvvm,Space,Numeric,我在屏幕上使用双重上下控制。我覆盖OnKeyPressed in.cs文件以防止任何非数字键进入。我不能在数字前按空格键。但我仍然可以在一个数字之间输入一个空格键,它不会转到我实现的覆盖方法 我还可以选择控件中的所有数字,然后按空格键 如何预防 下面是我的覆盖方法: protected override void OnKeyDown(KeyEventArgs e) { if ("OemPeriodDecimal".Contains(e.Key.ToString()

我在屏幕上使用双重上下控制。我覆盖OnKeyPressed in.cs文件以防止任何非数字键进入。我不能在数字前按空格键。但我仍然可以在一个数字之间输入一个空格键,它不会转到我实现的覆盖方法

我还可以选择控件中的所有数字,然后按空格键

如何预防

下面是我的覆盖方法:

    protected override void OnKeyDown(KeyEventArgs e)
    {
        if ("OemPeriodDecimal".Contains(e.Key.ToString()) && DoubleUpDown.Text.Contains("."))
        {
            e.Handled = true;
        }
        else
        {
            e.Handled = !("D1D2D3D4D5D6D7D8D9D0OemPeriodDecimalNumPad0NumPad1NumPad2NumPad3NumPad4NumPad5NumPad6NumPad7NumPad8NumPad9".Contains(e.Key.ToString()));
        }
    }
我找到了解决办法

它必须使用OnPreviewKeyDown

    protected override void OnPreviewKeyDown(KeyEventArgs e)
    {
        if ("OemPeriodDecimal".Contains(e.Key.ToString()) && DoubleUpDown.Text.Contains("."))
        {
            e.Handled = true;
        }
        else
        {
            e.Handled = !("D1D2D3D4D5D6D7D8D9D0OemPeriodDecimalNumPad0NumPad1NumPad2NumPad3NumPad4NumPad5NumPad6NumPad7NumPad8NumPad9".Contains(e.Key.ToString()));
        }
    }