#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)
Я думаю, это то, что вы искали.
Дайте мне знать, если ваша проблема заключалась в чем-то другом, кроме этого.