Значение, привязанное к записи, всегда равно 0

#xamarin.forms

#xamarin.forms

Вопрос:

Я привязал свое числовое entry значение к viewmodel SelectedAmount . Тем не менее value , всегда 0 , даже если я добавляю какое-то значение в графический entry интерфейс, оно переходит в property , и я вижу _selectedAmount , как 0. Что может быть не так?

Xaml:

 <Entry Placeholder="Amount" Text="{Binding SelectedAmount, Mode=TwoWay}" Keyboard="Numeric" MaxLength="5" />
 

Свойство привязки ViewModel:

 private int _selectedAmount;
public int SelectedAmount
{
    get => _selectedAmount;
    set
    {
        if (_selectedAmount <= 0)
           _pageService.DisplayAlert("Warning", "Value has to be between 1 - 10000", "ok", "cancel");
        else
            SetValue(ref _selectedAmount, value);
        }
}
 

Комментарии:

1. if (_selectedAmount <= 0) вы имели в виду? if (value <= 0)

Ответ №1:

Ваша проблема в этой строке

         if (_selectedAmount <= 0)
 

Всякий раз, когда вы пытаетесь ввести число в свою запись, SelectedAmount будет вызываться параметр setter of, и он всегда будет проверять ваше условие, if (_selectedAmount <= 0) и поскольку оно _selectedAmount не менялось на протяжении всего сеанса, оно всегда будет оставаться равным 0 и возвращать 0, потому что ваш компилятор никогда не введет часть else и никогда не установит входное значениедля _selectedAmount

Вы должны изменить свое условие как

 if (value < 1 || value > 10000)
 

Я думаю, это то, что вы искали.

Дайте мне знать, если ваша проблема заключалась в чем-то другом, кроме этого.