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" (слайдер) и привязываю к свойству "Текст" метки. Слайдер обязателен для моей модели.