是否由于未使用字符串而在视图中输入双精度字?

时间:2019-01-03 08:18:59

标签: c# xaml types converters

我有一个View,可以在其中输入double。问题是,我只能输入整数,例如“ 100”,而不能输入“ 100.4”。我所有的背景计算都是双打。有简单的解决方法吗?

查看:

<TextBox Grid.Column="1" Grid.Row="1" HorizontalAlignment="Center" Grid.RowSpan="2" 
                     Text="{Binding RelativeSource={RelativeSource AncestorType=UserControl}, Path=DelayModel.DelayTime, UpdateSourceTrigger=PropertyChanged}"/>

型号:

    private double _delayTime;

    public double DelayTime
    {
        get
        {
            return _delayTime;
        }
        set
        {
            if (value != _delayTime)
            {
                _delayTime = value; NotifyPropertyChanged();
            }
        }
    }

另一个使用delayTime的模型:

public double TotalAxisTime
        {
            get
            {
                double positioningTime = 0.0;
                double delayTime = 0.0;

                foreach (var block in BlockList)
                {
                    if (block is PositioningModel)
                    {
                        positioningTime = positioningTime + ((PositioningModel)block).PositioningTime;
                    }

                    if (block is DelayModel)
                    {
                        delayTime = delayTime + ((DelayModel)block).DelayTime;
                    }
                }
                return (positioningTime + delayTime);
            }
        }

(PositioningTime是另一个双精度值,我可能需要将其转换为字符串。

我正在努力实现Convert.ToString()-Method。这是正确的方法吗?我应该在XAML中使用专用的Converter吗?像带有IValueConverter的StringToDoubleConverter一样?

任何建议都会有所帮助。预先感谢。

1 个答案:

答案 0 :(得分:0)

这是处理此问题的一种快速方法。不是最合适的,转换器可能会更好。

public string DelayTimeText
{
    get
    {
        return _delayTimeText;
    }
    set
    {
        _delayTimeText = value; NotifyPropertyChanged();
    }
} 

public double DelayTime
{
    get
    {
        if (double.TryParse( DelayTimeText, out double val ));
        _delayTime = val;

        return _delayTime;
    }
}

然后,您将绑定到Text属性,并且您的计算将依赖于TryParse,如果无法解析,TryParse会退回到先前的值。