Я собираюсь ответить на это, сделав два предположения:
- Фактический вопрос, который вы задаете: «Как я могу связать свойство
IsVisible
кнопки со свойствомна моей модели? " - Что ваши привязки для ваших свойств действительно работают.Единственная причина, по которой я поднял этот вопрос, заключается в том, что я не вижу, чтобы
INotifyPropertyChanged
использовался где-либо еще.
С вышеизложенными допущениями вместо добавления дополнительного свойства к вашей модели только для обработки состояния представленияЯ рекомендую использовать Value Converter для установки свойства IsVisible
.
Преобразователь будет выглядеть примерно так:
public class StringToBoolConverter : IValueConverter
{
public object Convert(
object value,
Type targetType,
object parameter,
CultureInfo culture)
{
return (string)value == "paid";
}
public object ConvertBack(
object value,
Type targetType,
object parameter,
CultureInfo culture)
{
throw new NotImplementedException();
}
}
Ваш вид будет выглядеть следующим образом:
<ContentPage.Resources>
<ResourceDictionary>
<local:StringToBoolConverter x:Key="stringToBool" />
</ResourceDictionary>
</ContentPage.Resources>
<!--your code --->
<Button Text="Abrir"
IsVisible="{Binding statusDescr, Converter={StaticResource stringToBool}}"
BackgroundColor="#1C97D5"
TextColor="White" />
Затем вы можете удалить свойство IsVisible
из вашей Payment
модели.
Я хотел бы отметить, что если у вас есть какой-либо контроль над API, было бы лучше иметь егоотправить обратно bool, если существует только два состояния, или Enum, если существует более двух состояний.Струны могут сломаться слишком легко.