由于不使用字符串而在视图中输入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()-方法。这是正确的方法吗?我应该在XAML中使用专用转换器吗?像StringToDoubleConverter和IValueConverter?

任何建议都会有所帮助。提前谢谢。

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

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,如果解析失败,它将返回到以前的值。

相关内容

  • 没有找到相关文章

最新更新