Я пытаюсь получить простой пример двухсторонней привязки, работающий с преобразователем, но как только значение в записи изменяется, например, если вы вводите 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} }" />