我试图获得一个使用转换器的简单双向绑定示例,但是一旦条目中的值发生变化,例如如果您输入 1,它就会陷入无限循环,它会到达 ConvertBack 方法的末尾并设置值正确。然后,它再次调用 ConvertBack 方法,除了这次的值是 11,下一次它将是 111,并继续执行,直到模拟器崩溃。
即使当我停止调试时,模拟器也会不断地将数字输入到新的搜索窗口中。
转换器:
public class StringToNullableInt : IValueConverter
{
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo language)
{
if (string.IsNullOrEmpty(value?.ToString()))
{
return null;
}
else
{
int tmp = 0;
if (Int32.TryParse(value.ToString(), out tmp))
{
return tmp;
}
else
{
return null;
}
}
}
public object Convert(object value, Type targetType, object parameter, CultureInfo language)
{
return value;
//throw new NotImplementedException();
}
}
要绑定的字段
public int? Test
{
get
{
return _test;
}
set
{
if (value != _test)
{
_test = value;
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs("Test"));
}
}
}
束缚场
<Entry Text="{Binding Test, Mode=TwoWay, Converter={StaticResource cnvStringToNullableInt} }" />