В Xamarin.Forms я реализовал интерфейс IValueConverter.
public class NiceConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
string valueAsString = value as string;
return valueAsString + "SP";
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
string valueAsString = value as string;
return valueAsString + "GP";
}
}
В части XML я привязываю текст Entry и указываю, что использую этот преобразователь:
<ContentPage.Resources>
<convertorsNS:NiceConverter x:Key="myAddDollarSignConverter"/>
</ContentPage.Resources>
<StackLayout>
<Entry x:Name="myTextEntry" Text="{Binding NiceString ,
Converter = {StaticResource NiceConverter }, Mode=TwoWay}"/>
Я ожидал, что когда я наберу один символ в записи, скажем, «A», будет вызываться ConvertBack (), поэтому строка «AGP» будет отправлена в свойство привязки источника,
, но теперь это приводит к изменению связанного свойства Source , поэтому будет вызываться Convert (), поэтому строка 'AGPSP' будет отправлена в цель
, но теперь это вызывает измените Target , поэтому теперь ConvertBack () будет вызываться снова, поэтому строка AGPSPGP будет отправлена в источник
, но теперь это приводит к изменению в Source ...
... и таким образом я ожидаю, что go будет бесконечно.
Конечно, я ошибаюсь. Подскажите, пожалуйста, где?