簡體   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