【发布时间】:2014-11-02 19:58:28
【问题描述】:
我有以下文本框:
<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>
在 viewModel 中:
VoorzieningParameters = new ObservableCollection<Parameter>();
VoorzieningParameters.Add(new Parameter() { Naam = "berging" });
其中 Parameter 是具有描述 (Naam) 和值的双精度类。
public class Parameter
{
public Parameter()
{
}
public string Naam { get; set; }
public double? Double { get; set; }
}
这很好,我在文本框中输入数据,当我点击保存按钮时,我循环遍历 ObservableCollection 中的所有“参数”并将它们写入 XML。但是现在我想制作一个加载按钮,而不是将值写入文本框,我只想在视图模型中设置参数并使用 TwoWay 绑定。但是,当我将绑定模式更改为双向时,文本框不再接受小数分隔符(或。)。当我尝试输入 7.0 时,它只是 sais 70。
我尝试在文本框上使用字符串格式,然后它允许使用分隔符,但是当我尝试输入类似 7.0 的内容时,它变成了 7.0.0
我该如何解决这个问题?
【问题讨论】:
-
TextBox.Text 默认为 String,尝试使用 Converter 将其转换为 Double
-
你能举个例子吗?我试过几个转换器都没有成功
标签: c# wpf data-binding double