我将一个按钮默认设置为IsEnabled = false
.后两个Entries
有输入并经过验证,按钮应更改为 IsEnabled = true
.
到目前为止,这是我在 MainPage 上的内容:
var button = new Button
{
Text = "Text",
.
.
.
IsEnabled = false
};
var entry1 = new Entry
{
.
.
.
};
var entry1 = new Entry
{
.
.
.
};
button.SetBinding(Button.CommandProperty, "EnableButtonComand");
在我的 ViewModel 我有这个:
bool isValidatedEntry1 = false;
bool isValidatedEntry2 = false;
bool isAllValidated = false;
public Command EnableButtonCommand { get; }
public bool IsValidatedEntry1
{
get { return isValidatedEntry1; }
set { isValidatedEntry1 = value; OnPropertyChanged("IsValidatedEntry1"); OnPropertyChanged("IsAllValidated"); }
}
public bool IsValidatedEntry2
{
get { return isValidatedEntry2; }
set { isValidatedEntry2= value; OnPropertyChanged("IsValidatedEntry2"); OnPropertyChanged("IsAllValidated"); }
}
public bool IsAllValidated
{
get { return isAllValidated; }
set { if (IsValidatedEntry1 && IsValidatedEntry2)
{
isAllValidated = true;
}
else
{
isAllValidated = false;
}
OnPropertyChanged("IsAllValidated");
EnableButtonCommand.ChangeCanExecute();
}
}
这在我的 ViewModel 类的构造函数中:
public Constructor()
{
EnableButtonCommand = new Command(EnableButton, () => !IsAllValidated);
}
我的
Validation-Class
正在将属性设置为 True
验证成功后。我使用断点,它看起来像
IsAllValidated
属性永远不会更新——只有“条目”属性是。为什么会发生这种情况,我应该改变什么?
最佳答案
IsAllValidated
作为可设置属性没有多大意义,因为它不需要 value
,并且不应该需要存储任何东西(因为它的状态完全取决于其他人,如果我正确地解释了您的要求)。相反,我会尝试这样的事情:
public bool IsAllValidated => IsValidatedEntry1 && IsValidatedEntry2;
关于C# 使按钮在两个条件为真后可见,具有可绑定(bind)属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46307408/