Nano Hash - криптовалюты, майнинг, программирование

Xamarin формирует преобразователь значений, вызывающий бесконечный цикл

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

Ответы:


1

Привязать Int к записи не очень хорошее решение (для меня).

Я предлагаю иметь свойство TestString

string _testString {get;set;}
public string TestString {
    get{
       return _testString;

    }
    set{
        try {
            _testString = value;
            _test = int.Parse(_testString);
        }
        catch {    _test = null;}
    }
}

теперь вы можете попробовать связать с TestString без IValueConverter

03.04.2017
  • Я использовал int в качестве примера, но если я изменю его на строки, я получу точно такую ​​​​же проблему с циклом. каждый раз, когда я использую двустороннюю привязку с преобразователем, как я сделал в примере, это, кажется, происходит 03.04.2017
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..