双数字控件格式

时间:2017-06-26 13:59:26

标签: wpf mvvm

如果有人能想出更好的描述这个问题,请告诉我,我知道这很糟糕。

我有一个数字控件,由滑块,文本框和数字触控板组成。

文本框中显示的数字是可编辑的,并始终显示其精度。 1.0,2.0等。

问题是,我按1.0上的十进制旁边的退格键,数字变为10.0(因为它刚刚删除了小数)这是有意义的,但是我想改为以某种方式制作退格跳过小数。有人知道有什么方法可以做到吗?

- 编辑 -

目前,文本框中显示的值使用以下

进行格式化
<i:Interaction.Behaviors>
    <core:TextBoxInputRegExBehaviour RegularExpression="^\-?\d+\.?\d*$"
                                                             MaxLength="9"
                                                             EmptyValue="0.0" />
</i:Interaction.Behaviors>

在其后面的代码中用

更新
    public double SliderValue
    {
        get { return _sliderValue; }
        set
        {
            SetProperty( ref _sliderValue, Truncate( value ) );
            TextBoxValue = _sliderValue.ToString( "F" + Precision );
        }
    }

    public string TextBoxValue
    {
        get
        {
            _textBoxValue = SliderValue.ToString( "F" + Precision );
            return _textBoxValue;
        }
        set
        {
            //not important
        }

1 个答案:

答案 0 :(得分:0)

找出解决问题的方法。按下表格中的退格按钮。

使用以下内容检查插入符号是否在小数点旁边。

        var precision = DataContext.GetType().GetProperty("Precision").GetValue(DataContext, null);
        var p = Convert.ToInt32(precision);
        if ( ValueDisplayBox.CaretIndex == ValueDisplayBox.Text.Length - p )
        {
            ValueDisplayBox.CaretIndex--;
        }

我可能需要根据他们想要处理的方式添加e.handled,但它似乎做了我需要它。