C# 具有双向数据绑定(双精度)的文本框不允许使用十进制分隔符
我有以下文本框:C# 具有双向数据绑定(双精度)的文本框不允许使用十进制分隔符,c#,wpf,data-binding,double,C#,Wpf,Data Binding,Double,我有以下文本框: <TextBox x:Name="VoorzieningBerging" HorizontalAlignment="Right" TextChanged="SimulatieWijziging" Margin="0,0,45,0" Width="60" Height="25"> <TextBox.Text> <Binding Path="VoorzieningParameters[0].D
<TextBox x:Name="VoorzieningBerging"
HorizontalAlignment="Right" TextChanged="SimulatieWijziging"
Margin="0,0,45,0" Width="60" Height="25">
<TextBox.Text>
<Binding Path="VoorzieningParameters[0].Double"
ValidatesOnDataErrors="True" UpdateSourceTrigger="PropertyChanged"
FallbackValue="0" Mode="OneWayToSource">
<Binding.ValidationRules>
<src:DoubleValidation/>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
这很好,我在文本框中输入数据,当我点击save按钮时,我循环遍历ObservableCollection中的所有“参数”,并将它们写入XML。然而,现在我想创建一个加载按钮,但是我不想将值写入文本框,而是想在viewmodel中设置参数,并使用双向绑定。但是,当我将绑定模式更改为双向时,文本框不再接受十进制分隔符(、或)。当我尝试输入7.0时,它只是说70
我试着在文本框中使用字符串格式,然后它允许一个分隔符,但当我尝试输入类似7.0的内容时,它变成了7.0.0
如何解决此问题?当您将绑定设置为双倍时,它会自动调用.ToString(),因此无需使用转换器在TextBox.Text中显示其值。不幸的是,它不允许像您描述的那样放置“.”或“.”。我有两个解决办法
对于绑定,请尝试添加延迟。我用300,你可以用任何数字。这似乎对我的应用程序起到了作用 例如:
<Binding Path="VoorzieningParameters[0].Double"
ValidatesOnDataErrors="True" UpdateSourceTrigger="PropertyChanged"
Delay=300
FallbackValue="0" Mode="OneWayToSource">
TextBox.Text默认为字符串,请尝试使用转换器将其转换为double。您能给我一个示例吗?我尝试了一些转换器,但没有成功。是的,昨天我通过将属性更改为字符串解决了这个问题。对于这个应用程序来说,这没什么大不了的,因为我将属性转换为XML,所以我必须将它们转换为字符串,但为了将来的使用,我希望有更好的解决方案。谢谢你的意见
public class Parameter
{
public Parameter()
{
}
public string Naam { get; set; }
public double? Double { get; set; }
}
<Binding Path="VoorzieningParameters[0].Double"
ValidatesOnDataErrors="True" UpdateSourceTrigger="PropertyChanged"
Delay=300
FallbackValue="0" Mode="OneWayToSource">