如何禁用按钮,直到所有条目都填满?

时间:2019-07-04 11:18:27

标签: c# xaml xamarin.forms

我正在使用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));
        }
    }

已绑定到按钮的启用属性

2 个答案:

答案 0 :(得分:1)

您在正确的轨道上

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

但是,要使其正常工作,entry1entry2等的设置者应该触发PropertyChanged("IsButtonEnabled");

答案 1 :(得分:0)

步骤1:为您在xaml中的所有条目设置TextChanged事件:

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步:在您的ViewModel中实现IsAllEntriesFilled(),并检查Entries的所有绑定属性是否都有一些文本:

public void IsAllEntriesFilled()
{
    if (!string.IsNullOrEmpty(Entry1Text) && !string.IsNullOrEmpty(Entry2Text) && !string.IsNullOrEmpty(Entry3Text))
    {
        IsButtonEnabled = true;
    }
    else
    {
        IsButtonEnabled = false;
    }
}