我实现了一个文本框,它绑定到一个视图模型。例如,我在文本框中默认填写“100”,但如果我将其更改为 10,则该属性始终设置正确。但是当我删除所有数字时,我希望该属性设置为空。但它只是在没有填写任何内容时不设置该值。他只是保留最后一个值。
这是我的代码,viewmodel + xaml:
public double MaxTime
{
get
{
return maxTime;
}
set
{
maxTime = value;
OnPropertyChanged("MaxTime");
if (SelectedQuestionDropList != null)
{
foreach (QuestionCluster cluster in this.Examination.QuestionClusters)
{
if (cluster == SelectedQuestionDropList)
{
cluster.MaxTime = value;
}
}
}
}
}
<TextBox Height="23"
Visibility="{Binding Path=VisibleClusterDetails, Converter={StaticResource boolToVis},UpdateSourceTrigger=PropertyChanged}"
Text="{Binding Path=MaxTime,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}"
HorizontalAlignment="Right" Margin="0,511,601,0" Name="textBox2"
VerticalAlignment="Top" Width="120" />
这是一个具有约束力的问题,你必须做三件事
1)将系统命名空间导入到您的xaml文件中(注意sys
关键词):
xmlns:sys="clr-namespace:System;assembly=mscorlib"
2)然后在你的绑定中,你需要告诉它当文本框中的值为 string.Empty 时发送 null (这是当文本框中没有任何内容时的值,这就是为什么它不起作用,因为 string.Empty 不能' t 转换为双精度)。通过做这个:
<TextBox Text={Binding MaxTime,TargetNullValue={x:Static sys:String.Empty}}/>
3)改变你的ViewModelMaxTime
属性为类型double?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)