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

标签 c# xamarin mvvm

我将一个按钮默认设置为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/

相关文章:

c# - 如何开发负载平衡友好的 Web 应用程序

c# - 将类型约束到接口(interface)的目的是什么?

c# - 在 TreeViewItem 中存储对象?

ios - 上传录音到ftp

c# - 尝试将托管代码中的字符串返回到 C++

wpf - MVVM 和多线程

c# - 检测悬停在 ViewModel 中的 ListBoxItem 上

c# - 通过数组传递给构造函数

c# - 在 Xamarin.Forms MVVM 应用程序中加载数据的位置?

c# - WPF UI 线程被大集合阻塞