繁体   English   中英

具有可绑定属性的两个条件为真后,C#使按钮可见

[英]C# make button visible after two criteria are true with bindable property

我默认将按钮设置为IsEnabled = false 在两个Entries具有输入并通过验证后,按钮应更改为IsEnabled = true

到目前为止,这是我的主页上的内容:

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属性从未更新过-只有'Entry'属性可以更新。 为什么会发生这种情况,我应该改变什么?

IsAllValidated作为可设置的属性没有多大意义,因为它不带任何value ,并且不需要存储任何内容(因为它的状态完全取决于其他人,如果我正确地解释了您的要求)。 相反,我会尝试这样的事情:

public bool IsAllValidated => IsValidatedEntry1 && IsValidatedEntry2;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM