我正在使用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));
}
}
已绑定到按钮的启用属性
答案 0 :(得分:1)
您在正确的轨道上
public bool IsButtonEnabled
{
get {
return !String.IsNullOrEmpty(entry1) &&
!String.IsNullOrEmpty(entry2) &&
// repeat for all Entries
}
}
但是,要使其正常工作,entry1
,entry2
等的设置者应该触发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;
}
}