【问题标题】:C# make button visible after two criteria are true with bindable propertyC# 使按钮在两个条件为真后可见,可绑定属性
【发布时间】:2018-02-28 15:36:29
【问题描述】:

我将一个按钮默认设置为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 属性从未更新——只有“条目”属性是。为什么会发生这种情况,我应该改变什么?

【问题讨论】:

  • 什么...为什么要在代码中创建 UI?
  • 这与主题无关...
  • 我没这么说。这表明更深层次的问题。

标签: c# xamarin mvvm


【解决方案1】:

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

public bool IsAllValidated => IsValidatedEntry1 && IsValidatedEntry2;

【讨论】:

  • 我会尝试将EnableButtonCommand.ChangeCanExecute() 添加到两个 Entry 属性的设置器中(或者添加一个他们可以调用的通用方法)。或者,您可能想检查Button.CommandProperty 是否是button.SetBinding 调用的正确绑定...这些都没有告诉按钮将其IsEnabled 从初始值更改为false。
  • 看来是这样。感谢您的建议,但它不起作用。你有其他想法来完成我的任务吗?不可能那么难...我确定我只是缺少一些小代码!
猜你喜欢
  • 2012-09-06
  • 1970-01-01
  • 1970-01-01
  • 2014-08-20
  • 2013-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-14
相关资源
最近更新 更多