我创建了Coverter,它仅用于TextBoxes的数字验证。 一切都很好,我在很少的地方使用它,但有一个地方,它只是不工作,我debbuged它,它开始工作,就像它是模式OneTime。转换器不想只在一种情况下工作
转换器:
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var val = value.ToString();
return (string.IsNullOrEmpty(val) ? "" : ((val.Substring(val.Length - 1).Equals(",") && val.Count(x => x == ',') < 2) || char.IsDigit(System.Convert.ToChar(val.Substring(val.Length - 1))) ? val : val.Substring(0,val.Length-1)));
}
而且我不知道,如果它的问题,但有一段时间,在窗口中使用,而第二次页,它不会在页面工作。 Page:
<TextBox Name="PeselTextBox"
Margin="2,5"
Width="70"
VerticalAlignment="Center"
Text="{Binding ElementName=PeselTextBox,
Path=Text,
Mode=OneWay,
UpdateSourceTrigger=PropertyChanged,
Converter={StaticResource NumberValidationConverter}}"/>
而在窗口中它是一样的。 试图寻找解决方案,但我只是不明白这个错误。
作为备注:您的验证在至少两种情况下不起作用:***复制并粘贴***和***在实际输入***之前移动插入符号*** - 不会假定它始终保留在TextBox的末尾。我已经在Window和Binding中尝试了你的代码(不只是一次),所以很奇怪听到它不适合Page。 –
“绑定”是指定义元素本身。为什么? – Sandesh
@KingKing它实际上在其他页面中工作,只在其中没有。 – Zeronader