我有以下文本框:
<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" });
其中参数是具有描述(Naam)和值为double的类。
public class Parameter
{
public Parameter()
{
}
public string Naam { get; set; }
public double? Double { get; set; }
}
这工作正常,我在文本框中输入数据,当我点击保存按钮时,我遍历所有&#34;参数&#34;在我的ObservableCollection中并将它们写入XML。但是现在我想制作一个加载按钮,而不是将值写入文本框,我只想在视图模型中设置参数,而是使用TwoWay绑定。但是,当我将绑定模式更改为TwoWay时,Textbox不再接受小数点分隔符(,或。)。当我尝试输入7.0时,它只是sais 70。
我尝试在文本框上使用字符串格式,然后允许分隔符,但是当我尝试输入类似7.0的内容时,它变为7.0.0
如何解决这个问题?
答案 0 :(得分:0)
当您将绑定设置为double时,它会自动调用.ToString(),因此无需使用Converter在TextBox.Text中显示其值。不幸的是,它不允许放置&#39;。或&#39;,&#39;如你所描述的那样我有几个解决方案
答案 1 :(得分:0)
对于绑定,请尝试添加延迟。我使用300,你可以使用任何数字。这似乎对我的应用程序起了作用。
例如:
<Binding Path="VoorzieningParameters[0].Double"
ValidatesOnDataErrors="True" UpdateSourceTrigger="PropertyChanged"
Delay=300
FallbackValue="0" Mode="OneWayToSource">