110,533
社区成员
发帖
与我相关
我的任务
分享
<TextBox Width="200" Height="28" Text="{Binding TestNumber, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
这个绑定中,有没有UpdateSourceTrigger,现象是完全不一样的。
原因就在于:
1. 如果没有UpdateSourceTrigger,输什么都可以输,包括特殊字符,在此控件失去焦点的时候,.Net会去进行数据验证,如果发现输入不是有效的数据,比如上面的控件,就会去验证是不是有效的double型数据。如果不是,控件周围会出现红色框框,表示输入有误;
如果有UpdateSourceTrigger,那就不再是失去焦点再进行数据验证了,而是每输一个字符就验证一下,即TextChanged就会验证。
那么,“0.“转换为有效的double型数据,自然就是0,一输入小数点,就被转换转没了。所以你认为没输入。
具体解决方案,那就得自定义控件了。必要时,还得自定义数据验证方式。 <Button x:Name="Btn" Content="Button" HorizontalAlignment="Left" Margin="412,341,0,0" VerticalAlignment="Top" Width="75"/>
<TextBox HorizontalAlignment="Left" Height="23" Margin="397,416,0,0" TextWrapping="Wrap" Text="{Binding ElementName=Btn,Path=Width,UpdateSourceTrigger=PropertyChanged}" VerticalAlignment="Top" Width="120"/>
<Button x:Name="Btn" Content="Button" HorizontalAlignment="Left" Margin="412,341,0,0" VerticalAlignment="Top" Width="75"/>
<TextBox HorizontalAlignment="Left" Height="23" Margin="397,416,0,0" TextWrapping="Wrap" Text="{Binding ElementName=Btn,Path=Width,UpdateSourceTrigger=PropertyChanged}" VerticalAlignment="Top" Width="120"/>
我刚试了,在vs2010没问题,但是到2012就不行了?