Как отключить кнопку, пока все записи не будут заполнены? - PullRequest
1 голос
/ 04 июля 2019

Я работаю с xamarin.forms и пытаюсь отключить кнопку, пока все записи не будут заполнены.

Я работаю с шаблоном mvvm и пытался отключить его с помощью привязки следующим образом:

    private bool en;
    public bool GetValuesEn
    {
        get
        {
            if (login == "")
            {
                en = false;
                return en;
            } else { en = true; return en; };
        }
    }
    public bool En
    {
        get
        {
            return en;
        }
        set
        {
            SetProperty(ref en, value);
            OnPropertyChanged(nameof(GetValuesEn));
        }
    }

ru привязывается к свойству включенной кнопки

Ответы [ 2 ]

1 голос
/ 04 июля 2019

вы на правильном пути

public bool IsButtonEnabled
{
  get {
    return !String.IsNullOrEmpty(entry1) &&
           !String.IsNullOrEmpty(entry2) &&
           // repeat for all Entries
  }
}

однако, чтобы это работало, сеттеры для entry1, entry2 и т. Д. Должны срабатывать PropertyChanged("IsButtonEnabled");

0 голосов
/ 04 июля 2019

Шаг 1: Установить TextChanged событие для всех ваших записей в xaml:

TextChanged="EntryTextChanged"

Шаг 2: Ввести EntryTextChanged в кодепозади:

private async void EntryTextChanged(object sender, TextChangedEventArgs e)
{
    if (e.NewTextValue != null)
    {
        var entry = sender as Entry;
        ((MyViewModel)entry).IsAllEntriesFilled();
    }
}

Шаг 3: Реализуйте IsAllEntriesFilled() в своей модели представления и проверьте, есть ли у всех связанных свойств записей некоторый текст:

public void IsAllEntriesFilled()
{
    if (!string.IsNullOrEmpty(Entry1Text) && !string.IsNullOrEmpty(Entry2Text) && !string.IsNullOrEmpty(Entry3Text))
    {
        IsButtonEnabled = true;
    }
    else
    {
        IsButtonEnabled = false;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...