Xamarin формы: как визуализировать тот же введенный текст записи A в записи B и наоборот

Как отобразить текст, введенный в тексте записи A, в записи B и наоборот?

Я очень новичок в разработке форм Xamarin.

ViewModal: ниже находятся объекты, привязываемые к полю ввода, здесь каждое поле имеет свою десятичную проверку. Требование: если текст записи A изменился, текст записи B должен измениться в зависимости от введенного текста и наоборот.

Здесь я столкнулся с проблемами в обработке OnPropertyChanged.

    private string _inputValues_PercentTimer;
    public string InputValues_PercentTimer
    {
        get { return _inputValues_PercentTimer; }
        set
        {
            _inputValues_PercentTimer = CalculationActions.DecimalValidation(value, _inputValues_PercentTimer, 1, 0.0, 100.0, "");
            OnPropertyChanged("InputValues_PercentTimer");
        }
    }


    private string _inputValues_AppDepth;
    public string InputValues_AppDepth
    {
        get { return _inputValues_AppDepth; }
        set
        {

            _inputValues_AppDepth = CalculationActions.DecimalValidation(value, _inputValues_AppDepth, 3, 0.000, 100.00, "");
            OnPropertyChanged("InputValues_AppDepth");
        }
    }

2 ответа

Я решил эту проблему, Предотвратить тупик между зависимыми свойствами. Спасибо всем за поддержку.

private string _inputValues_PercentTimer;
public string InputValues_PercentTimer
{
    get { return _inputValues_PercentTimer; }
    set
    {
        if (_inputValues_PercentTimer != value && !string.IsNullOrEmpty(value))
        {
            _inputValues_PercentTimer = CalculationActions.DecimalValidation(value, _inputValues_PercentTimer, 1, 0.0, 100.0, "");
            double calRes = 5 + double.Parse(_inputValues_PercentTimer);
            _inputValues_AppDepth = calRes.ToString();
            OnPropertyChanged("InputValues_AppDepth");
            OnPropertyChanged("InputValues_PercentTimer");
        }
    }
}

private string _inputValues_AppDepth;
public string InputValues_AppDepth
{
    get { return _inputValues_AppDepth; }
    set
    {
        if (_inputValues_AppDepth != value && !string.IsNullOrEmpty(value))
        {
            _inputValues_AppDepth = CalculationActions.DecimalValidation(value, _inputValues_AppDepth, 3, 0.000, 100.00, "");
            double calRes = 5 + double.Parse(_inputValues_AppDepth);
            _inputValues_PercentTimer = calRes.ToString();
            OnPropertyChanged("InputValues_PercentTimer");
            OnPropertyChanged("InputValues_AppDepth");
        }
    }
}

Извините за плохой английский

Используйте запись A для привязки к вашей модели представления, а в записи B создайте привязку перекрестной ссылки (я не уверен, что это правильный термин).

Эта ссылка об обязательных основах, и она может вам помочь.

Вот некоторый фрагмент кода XAML с этим:...

<Slider x:Name="sdrMediumBattery" 
    HorizontalOptions="FillAndExpand" 
    Value="{Binding MediumBattery}"`
    Maximum="100" 
    Margin="0,0,0,10"/>

...

<Label x:Name="lblMediumBattery" 
    BindingContext="{x:Reference sdrMediumBattery}"
    FontSize="Large" 
    HorizontalTextAlignment="Center" 
    WidthRequest="50" 
    Text="{Binding Value, StringFormat='{0:#00}'}"/>

Я использую свойство "Значение" из представления "sdrMediumBattery" (слайдер) и привязываю к свойству "Текст" метки. Слайдер обязателен для моей модели.

Другие вопросы по тегам